python有道api-Python3--批量爬取数据之调用有道api进行翻译
上代码:# coding=utf-8
import urllib,urllib.request
from fake_useragent import UserAgent
import json
import time
import hashlib
import urllib.parse
import requests
import random
import csv,re
class YouDaoFanyi:
def __init__(self, appKey, appSecret):
self.url = 'https://openapi.youdao.com/api/'
self.headers = { 'User-Agent':str(UserAgent().random)}
self.appKey = appKey # 应用id
self.appSecret = appSecret # 应用密钥
self.langFrom = 'EN' # 翻译前文字语言,auto为自动检查
self.langTo = 'zh-CHS' # 翻译后文字语言,auto为自动检查
def getUrlEncodedData(self, queryText):
'''
将数据url编码
:param queryText: 待翻译的文字
:return: 返回url编码过的数据
'''
salt = '2' # 产生随机数 ,其实固定值也可以,不如"2"
sign_str = self.appKey + queryText + salt + self.appSecret
sign_str=sign_str.encode('utf-8')
sign = hashlib.md5(sign_str).hexdigest()
payload = {
'q': queryText,
'from': self.langFrom,
'to': self.langTo,
'appKey': self.appKey,
'salt': salt,
'sign': sign
}
# 注意是get请求,不是请求
data = urllib.parse.urlencode(payload)
return data
def parseHtml(self, html):
'''
解析页面,输出翻译结果
:param html: 翻译返回的页面内容
:return: None
'''
data = json.loads(html)
print ('-------------------------')
translationResult = data['translation']
if isinstance(translationResult, list):
translationResult = translationResult[0]
print (translationResult)
return translationResult
def translate(self, queryText):
data = self.getUrlEncodedData(queryText) # 获取url编码过的数据
target_url = self.url + '?' + data # 构造目标url
# request = urllib2.Request(target_url, headers=self.headers) # 构造请求
ip_list=get_ip_list()
proxies=get_random_ip(ip_list)
print('随机ip为:'+str(proxies))
req = requests.get(target_url,proxies=proxies, headers=self.headers) # 构造请求
# with request.urlopen(request) as response111: # 发送请求
req.encoding='utf-8'
html=req.text
translationResult=self.parseHtml(html) # 解析,显示翻译结果
return translationResult
#功能:读取文件并处理
def read_file(filepath):
reader=[]
with open(filepath,'r',encoding='utf-8') as csvfile:
spanreader = csv.reader(csvfile,delimiter='|',quoting=csv.QUOTE_MINIMAL)
for row in spanreader:
if row:
reader.append(row)
return reader
#功能:将爬取到的内容写入文件
#注意事项:写文件时open中要加上newline='',否则写一行后程序会自动换行
def write_file(filepath,row):
with open(filepath,'a+',encoding='utf-8',newline='') as csvfile:
spanreader = csv.writer(csvfile,delimiter='|',quoting=csv.QUOTE_MINIMAL)
spanreader.writerow(row)
#获取IP列表并检验IP的有效性
def get_ip_list():
f=open('IP.txt','r')
ip_list=f.readlines()
f.close()
return ip_list
#从IP列表中获取随机IP
def get_random_ip(ip_list):
proxy_ip = random.choice(ip_list)
proxy_ip=proxy_ip.strip(' ')
proxies = {'http': proxy_ip}
return proxies
if __name__ == "__main__":
print('程序开始运行!')
appKey = '应用id' # 应用id
appSecret = '应用密钥' # 应用密钥
fanyi = YouDaoFanyi(appKey, appSecret)
reader=read_file('E_baiduBaike_notHaveChinese.csv')
for row in reader:
print('现在翻译的人名是:'+row[0])
translationResult=fanyi.translate(row[0])
print('翻译结果为:'+str(translationResult))
zhPattern = re.compile(u'[一-龥]+')
if zhPattern.search(translationResult):
row[6]=translationResult
write_file('经有道翻译处理后的文件/E_baiduBaike_youdaoChinese.csv',row)
print('爬取完成')
python有道api-Python3--批量爬取数据之调用有道api进行翻译相关推荐
- Python3--批量爬取数据之调用有道api进行翻译
上代码: # coding=utf-8 import urllib,urllib.request from fake_useragent import UserAgent import json im ...
- python实战-HTML形式爬虫-批量爬取电影下载链接
文章目录 一.前言 二.思路 1.网站返回内容 2.url分页结构 3.子页面访问形式 4.多种下载链接判断 三.具体代码的实现 四.总结 一.前言 喜欢看片的小伙伴,肯定想打造属于自己的私人影院 ...
- Python 爬虫实战,模拟登陆爬取数据
Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...
- Python每日一练(9)-批量爬取B站小视频
目录 1. 批量爬取B站小视频 2. 获取动态请求的JSON数据 3. 随机生成浏览器的头部信息 4. 获取要下载视频的大小 5. 实时打印文件下载进度 1. 批量爬取B站小视频 哔哩哔哩网站(英文名 ...
- Python爬虫学习教程,批量爬取下载抖音视频
这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qu ...
- Python爬虫练习-Xpath解析批量爬取PPT
批量爬取PPT,分页爬取 import os import requests from lxml import etreeif __name__ == '__main__':# UA伪装headers ...
- python爬虫实战1:批量爬取网址图片
1.爬虫基础知识 目前,爬虫的相关知识了解了以下这么多. 2.爬取图片的步骤 学习了很多视频教程,基本介绍爬虫都是主要分3步: 1.请求网页 2.解析网页 3.保存图片 3.爬虫实战 唯有实战,才能提 ...
- Python+selenium+firefox登录微博并爬取数据(2)
上次写到安装完成环境,并且成功访问到微博首页(未登录状态).后来发现新浪的登录机制太繁琐,所以放弃selenium登录,转向使用新浪官方Api 爬取数据.但是,写完之后才发现,调用接口也有限制.没办法 ...
- akshare批量爬取数据并保存为excel格式
作用:根据aa.txt内的代码,爬取数据,保存在以代码为名的xls文件中,注意"aa.txt"路径,路径中有"\"时,需用"\\"替代: 爬 ...
最新文章
- 双极性信号、正交信号和PAM信号通信系统仿真
- oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案
- 2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
- springcloud hystrix概述(一)
- jsp基础代码片段(含sql与js和jsp的交互)与简易贴吧网站项目
- 一种动态组装SQL语句的方法
- Spring-aop-AbstractAutoProxyCreator
- PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍
- 树莓派是什么?能干什么?
- 修改计算机用户名bat脚本
- Arduino for esp8266串口功能简介
- iOS App被拒常见原因
- 我是一个线程 【转】
- PhoneApplicationFrame以及设置Obscured/Unobscured的event handler
- html+ul隐藏滚动条,2种方法实现CSS隐藏滚动条并可以滚动内容的方法
- 国家标准免费下载网站大全
- error C2065: “IDD_DIALOG1”: 未声明的标识符 .
- Ubuntu 12.04 LTS 下安装文件传输远程桌面共享软件Teamviewer
- 面试了一个32岁的程序员,一个细节就看出来是培训班的····
- 赛车游戏开发总结PHYSX OGRE
热门文章
- oracle 递归应用(挺复杂的)
- 【原创】聊天+传送文件+设置字体及颜色(vs2010+mfc开发)
- 顺便发现一bug??
- you need to build uWSGI with SSL support to use the websocket handshake api function !!!
- Tenka1 Programmer Contest C - Align
- Java 类加载全过程
- [deviceone开发]-Star分享的优惠券商户管理端App开源
- information_schema系列十一
- java step1:基础知识5(java中Timer和TimerTask的使用)
- 高并发高负载网站的系统架构