使用post请求:

  • 我们一般使用requests中的post请求会基于以下情况:
    1.模仿浏览器进行登录注册
    2.需要传输大文本数据时(post请求不限制数据长度)

  • 使用requests模块实现爬虫:requests.post(url=post_url,data=data)

寻找url与js数据:

一、 实现英文–>中文的翻译:

# coding=utf-8
import requestsheaders = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}
data = {"from":"en","to":"zh","query":"hola","transtype":"translang","simple_means_flag":"3","sign":"372549.85108","token":"e89a8f037aac1b51a86cbc82356949d"
}
post_url = "http://fanyi.baidu.com/v2transapi"r = requests.post(post_url,data=data,headers=headers)
print(r.content.decode())
  • 此时,执行代码会返回:
    {“error”:997,”from”:”en”,……}
    分析检查界面中的headers会发现,sign这个值会随着输入内容不同改变(也就是js动态生成的.),因此我们考虑将网页版改为手机版浏览。

    手机版代码与电脑版代码区别仅为url的不同,下面是手机版的爬虫代码。

# coding=utf-8
import requests
import json
import sysquery_string = sys.argv[1]headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"}post_data = {"query":query_string,"from":"zh","to":"en",
}post_url = "http://fanyi.baidu.com/basetrans"r = requests.post(post_url,data=post_data,headers=headers)
# print(r.content.decode())
dict_ret = json.loads(r.content.decode())
ret = dict_ret["trans"][0]["dst"]
print("result is :",ret)

二、实现自动检测语言的功能:

# coding=utf-8
import requests
import json
import sysclass BaiduFanyi:def __init__(self,trans_str):self.trans_str = trans_strself.lang_detect_url = "http://fanyi.baidu.com/langdetect"self.trans_url = "http://fanyi.baidu.com/basetrans"self.headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"}def parse_url(self,url,data): #发送post请求,获取响应response = requests.post(url,data=data,headers=self.headers)return json.loads(response.content.decode())def get_ret(self,dict_response):#提取翻译的结果ret = dict_response["trans"][0]["dst"]print("result is :",ret)def run(self):#实现主要逻辑#1.获取语言类型#1.1 准备post的url地址,post_datalang_detect_data = {"query":self.trans_str}#1.2 发送post请求,获取响应lang = self.parse_url(self.lang_detect_url,lang_detect_data)["lan"]#1.3 提取语言类型#2.准备post的数据trans_data = {"query":self.trans_str,"from":"zh","to":"en"} if lang== "zh" else \{"query":self.trans_str,"from":"en","to":"zh"}#3.发送请求,获取响应dict_response = self.parse_url(self.trans_url,trans_data)#4.提取翻译的结果self.get_ret(dict_response)if __name__ == '__main__':trans_str= sys.argv[1]baidu_fanyi = BaiduFanyi(trans_str)baidu_fanyi.run()

通过爬虫实现百度在线翻译相关推荐

  1. potplayer插件_Potplayer 百度在线翻译插件

    昨天下了一部电影只有英文字幕,找不到中文字幕,于是想着用Potplayer的在线翻译功能.开始试了下Google在线翻译,结果翻译了一会就没了,后来查询得知这翻译API也要钱的,不过可以注册GCP试用 ...

  2. html在线翻译,HTML实现调用百度在线翻译API

    最近在帮忙写网站,等有时间之后再仔细的研究后台. Translate Translate $("#Click").click(function (){ var contents = ...

  3. 百度api翻译html,百度在线翻译API (使用实例)

    [实例简介] 在http://api.fanyi.baidu.com/ 注册API使用的ID就可以使用的翻译工具,简化翻译过程,不用每次都打开网页. [实例截图]需要字自己注册APIID才行哦 [核心 ...

  4. HTML实现调用百度在线翻译API

    最近在帮忙写网站,等有时间之后再仔细的研究后台. <!doctype html> <html lang="en"> <head><meta ...

  5. 乱码翻译器在线翻译_GAL党的福音——开源生肉翻译器MisakaTranslator正式版发布...

    **注:本文的创作已征得软件原作者"技术宅の果冻(hanmin0822)"的许可 **软件作者 @果冻 已出现在评论区,欢迎交流** 关于本软件的文字使用教程正在制作中,后续将会在 ...

  6. 线上线下英文词典工具、在线翻译全搜罗

    线上线下英文词典工具.在线翻译全搜罗 <script language="javascript" type="text/javascript">va ...

  7. python百度翻译爬虫_Python爬虫教程-05-python爬虫实现百度翻译

    使用python爬虫实现百度翻译功能 python爬虫实现百度翻译: python解释器[模拟浏览器],发送[post请求],传入待[翻译的内容]作为参数,获取[百度翻译的结果] 通过开发者工具,获取 ...

  8. python在线翻译小程序_Python爬虫学习之翻译小程序

    本次博客分享的内容为基于有道在线翻译实现一个实时翻译小程序,本次任务是参考小甲鱼的书<零基础入门学习Python>完成的,书中代码对于当前的有道词典并不适用,使用后无法实现翻译功能,在网上 ...

  9. Python3网络爬虫教程8——有道在线翻译项目(JS加密)

    上接: Python3网络爬虫教程7--SSL数字证书 https://blog.csdn.net/u011318077/article/details/86538116 6. js加密(有道在线翻译 ...

最新文章

  1. 手把手玩转协同编辑(1):AST (Address Space Transformation)地址空间转换算法 基本介绍...
  2. 国内油价今日将迎九连跌 出租车燃油费望调整
  3. LeetCode 112. 路径总和 、113. 路径总和 II 思考分析
  4. 干货 | 深度学习的可解释性研究(一):让模型「说人话」
  5. 3.卷1(套接字联网API)---套接字编程简介
  6. 小卷积核的特征图与卷积参数变化不大,计算量变化明显
  7. 32、至少列举8个常用模块都有那些?
  8. 计算机二级资料汇总,包含多个题库
  9. 写软件详细设计方案总结
  10. 兔子-蓝牙 bluetooth (四)OPP文件传输
  11. 0人报名!清华转专业20+学科无人问津引热议,网友:一切为了吃饭
  12. C# Winform窗体切换与关闭
  13. LRC歌词制作LRC歌词制作
  14. Vba实现按选定类型排序标记
  15. 经典网络结构 (八):轻量化网络 (SqueezeNet, MobileNet, ShuffleNet)
  16. RPM软件包和YUM软件仓库的实例
  17. Linux rpm -ivm,Linux常见命令
  18. 稻城亚丁,从你的全世界路过
  19. 关于人工智能,你知道怎么学吗
  20. 海康iv4200支持多少_年度最佳理财产品的亲弟弟——海康威视C2000L256G测评

热门文章

  1. 开发通用资料——常用接口引脚定义
  2. JAVA用数据留给出师表排序,缓冲流:出师表排序
  3. Android客户端性能优化(魅族资深工程师毫无保留奉献)
  4. C/C++内存泄漏及检测
  5. 制作ghost的linux系统安装方法,(转)linux系统GHOST备份方案
  6. 第48讲 Android Camera2 API FD人脸检测
  7. 基于STM32F103的红外遥控的一点浅显知识的分享
  8. oracle的服务配置
  9. 想做编程者必看:三朝元老经验
  10. 三朝元老经验(转,推荐)