上代码:# 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进行翻译相关推荐

  1. Python3--批量爬取数据之调用有道api进行翻译

    上代码: # coding=utf-8 import urllib,urllib.request from fake_useragent import UserAgent import json im ...

  2. python实战-HTML形式爬虫-批量爬取电影下载链接

    文章目录 一.前言 二.思路 1.网站返回内容 2.url分页结构 3.子页面访问形式 4.多种下载链接判断 三.具体代码的实现 四.总结 一.前言   喜欢看片的小伙伴,肯定想打造属于自己的私人影院 ...

  3. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  4. Python每日一练(9)-批量爬取B站小视频

    目录 1. 批量爬取B站小视频 2. 获取动态请求的JSON数据 3. 随机生成浏览器的头部信息 4. 获取要下载视频的大小 5. 实时打印文件下载进度 1. 批量爬取B站小视频 哔哩哔哩网站(英文名 ...

  5. Python爬虫学习教程,批量爬取下载抖音视频

    这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qu ...

  6. Python爬虫练习-Xpath解析批量爬取PPT

    批量爬取PPT,分页爬取 import os import requests from lxml import etreeif __name__ == '__main__':# UA伪装headers ...

  7. python爬虫实战1:批量爬取网址图片

    1.爬虫基础知识 目前,爬虫的相关知识了解了以下这么多. 2.爬取图片的步骤 学习了很多视频教程,基本介绍爬虫都是主要分3步: 1.请求网页 2.解析网页 3.保存图片 3.爬虫实战 唯有实战,才能提 ...

  8. Python+selenium+firefox登录微博并爬取数据(2)

    上次写到安装完成环境,并且成功访问到微博首页(未登录状态).后来发现新浪的登录机制太繁琐,所以放弃selenium登录,转向使用新浪官方Api 爬取数据.但是,写完之后才发现,调用接口也有限制.没办法 ...

  9. akshare批量爬取数据并保存为excel格式

    作用:根据aa.txt内的代码,爬取数据,保存在以代码为名的xls文件中,注意"aa.txt"路径,路径中有"\"时,需用"\\"替代: 爬 ...

最新文章

  1. 双极性信号、正交信号和PAM信号通信系统仿真
  2. oracle 被另一用户锁定,Oracle报错记录被另外一个用户锁定的解决方案
  3. 2021-01-16交叉熵损失函数比均方误差损失函数优点在哪里
  4. springcloud hystrix概述(一)
  5. jsp基础代码片段(含sql与js和jsp的交互)与简易贴吧网站项目
  6. 一种动态组装SQL语句的方法
  7. Spring-aop-AbstractAutoProxyCreator
  8. PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍
  9. 树莓派是什么?能干什么?
  10. 修改计算机用户名bat脚本
  11. Arduino for esp8266串口功能简介
  12. iOS App被拒常见原因
  13. 我是一个线程 【转】
  14. PhoneApplicationFrame以及设置Obscured/Unobscured的event handler
  15. html+ul隐藏滚动条,2种方法实现CSS隐藏滚动条并可以滚动内容的方法
  16. 国家标准免费下载网站大全
  17. error C2065: “IDD_DIALOG1”: 未声明的标识符 .
  18. Ubuntu 12.04 LTS 下安装文件传输远程桌面共享软件Teamviewer
  19. 面试了一个32岁的程序员,一个细节就看出来是培训班的····
  20. 赛车游戏开发总结PHYSX OGRE

热门文章

  1. oracle 递归应用(挺复杂的)
  2. 【原创】聊天+传送文件+设置字体及颜色(vs2010+mfc开发)
  3. 顺便发现一bug??
  4. you need to build uWSGI with SSL support to use the websocket handshake api function !!!
  5. Tenka1 Programmer Contest C - Align
  6. Java 类加载全过程
  7. [deviceone开发]-Star分享的优惠券商户管理端App开源
  8. information_schema系列十一
  9. java step1:基础知识5(java中Timer和TimerTask的使用)
  10. 高并发高负载网站的系统架构