上代码:

  # 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,reclass YouDaoFanyi:def __init__(self, appKey, appSecret):self.url = 'https://openapi.youdao.com/api/'self.headers = { 'User-Agent':str(UserAgent().random)}self.appKey = appKey  # 应用idself.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.appSecretsign_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 datadef 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 translationResultdef 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.texttranslationResult=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('\n')proxies = {'http': proxy_ip}return proxiesif __name__ == "__main__":print('程序开始运行!')appKey = '应用id'  # 应用idappSecret = '应用密钥'  # 应用密钥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'[\u4e00-\u9fa5]+')if zhPattern.search(translationResult):row[6]=translationResultwrite_file('经有道翻译处理后的文件/E_baiduBaike_youdaoChinese.csv',row)print('爬取完成')

Python3--批量爬取数据之调用有道api进行翻译相关推荐

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

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

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

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

  3. Python3--批量爬取数据之调用百度api进行翻译

    上代码: #************************************************************ #文件功能:利用百度翻译将英文名翻译成中文 #********** ...

  4. python爬取cctalk视频_新媒体编辑怎么批量爬取数据

    说到数据采集,市面上很多采集工具,有商业的也有开源的各种工具,一搜一大堆,做新媒体的好不容易找到一些资料内容甚至图片,手工粘贴复制有时候很慢,一点都不友好,有没有办法能帮助新媒体从业者快速采集到想要的 ...

  5. python用akshare批量爬取金融数据并保存为excel格式

    python用akshare批量爬取数据并保存为excel格式 爬取的网站为http://vip.stock.finance.sina.com.cn/mkt/#hs_a的历史数据 首先,确定好你 下载 ...

  6. python爬去新浪微博_!如何通过python调用新浪微博的API来爬取数据

    python抓取新浪微博,求教 爬手机端 可以参考的代码, #-*-coding:utf8-*- import smtplib from email.mime.text import MIMEText ...

  7. 爬虫批量保存网页html,2分钟带你学会网络爬虫:Excel批量爬取网页数据(详细图文版)...

    面对网页大量的数据,有时候还要翻页,你还在一页一页地复制粘贴吗?别人需要几小时完成的任务,学会这个小技巧你只需要几分钟就能解决.快来学习使用Excel快速批量地爬取网页数据吧! 1.分析网页数据结构 ...

  8. PBI培训(4):批量爬取web来源公开数据

    前言:最近项目上有爬数据需求,好在只需要公开信息,用PBI就可以搞定,故整理了一下爬数步骤,查阅了简书和知乎大佬的文章发现还是会踩坑,这里整理一版详细的记录下来方便理解. 爬数方式: 爬单页数据并做简 ...

  9. Python3.x使用Scrapy将爬取数据存储成Json

    Python3.x使用Scrapy将爬取数据存储成Json 豆瓣电影排名前250链接 https://movie.douban.com/top250 注:前提安装好python及所需的环境 1.scr ...

最新文章

  1. 如何进行网站主题模型优化_如何进行网站关键词优化
  2. 深入理解Python闭包概念
  3. Day 09 学校应该鼓励学生做社区服务吗
  4. JqueryEasyUI 解决IE下datagrid无法刷新的问题
  5. 程序员看过来:阿里毕玄提升代码能力的4段经历
  6. nginx 返回动态Html,Nginx负载均衡 -Nginx动态更新upstream
  7. Demosaic算法学习
  8. Linux中的tty、pts、pty等概念辨析
  9. JS代码 是否显示横竖条
  10. 静态库的冲突 duplicate symbol
  11. 监控zabbix 服务并在异常时python 邮件报警
  12. 编程细节 —— 按值传递、按引用传递(final、const)
  13. 常见的c语言头文件作用,C语言的头文件的作用是什么?
  14. 文本的垂直居中 WPF
  15. charts 画折线图
  16. python识别文字软件_使用Python和大漠插件进行文字识别含软件源码
  17. Solidworks工程图预备工作-----模板设置
  18. optaplanner学习笔记(二)OptPlanner求解步骤及配置
  19. android系统最近删除照片,安卓手机最近删除的照片怎么恢复?专家教你这样做...
  20. Mock-Server搭建

热门文章

  1. PAT甲级1013 Battle Over Cities:[C++题解]并查集、结构体存边
  2. Leetcode51 n皇后 DFS+回溯(模板题)
  3. 得到课程《组织行为学》学习笔记07
  4. php新增数组函数,php操作数组函数
  5. 动态规划 dp03 最长公共子串问题 c代码
  6. form参数化 jq_[转载]Jquery Form插件表单参数
  7. 抽象方法可以有方法体_抽象类和模板方法设计模式
  8. java -cp 引用多个包_javac编译单文件、多文件引入jar包、-cp解决无法加载主类问题...
  9. 使用非常驻任务管理事件
  10. activity中fragment 返回键不退出_优雅地处理加载中(loading),重试(retry)和无数据(empty)等...