Request模块实战03 --- 破解百度翻译
程序员文章站
2022-06-26 17:12:20
Request模块实战03 — 破解百度翻译需求:破解百度翻译 — 获取一个单词所对应的翻译结果过程分析: 爬虫动态刷新 在查询单词的时候,我们所使用的是post提交方式进行查询。并且在每次查询输入的时候,翻译搜索栏都会局部动态刷新,这部分就会涉及到网页部分的Ajax。Ajax(Asynchronous JavaScript and XML),直译为“异步的JavaSc...
Request模块实战03 — 破解百度翻译
需求:破解百度翻译 — 获取一个单词所对应的翻译结果
过程分析:
爬虫动态刷新
- 在查询单词的时候,我们所使用的是post提交方式进行查询。并且在每次查询输入的时候,翻译搜索栏都会局部动态刷新,这部分就会涉及到网页部分的Ajax。
Ajax(Asynchronous JavaScript and XML),直译为“异步的JavaScript与XML技术”,是一种创建交互式网页应用的网页开发技术,用于创建快速动态网页,由杰西·詹姆士·贾瑞特所提出。与传统的Web应用相比,Ajax通过浏览器与服务器进行少量的数据交换就可以实现网页的异步更新,在不重新加载整个网页的情况下,即可对网页进行更新。
- 通过开发者模式我们可以进入到NetWork中找到对应的Ajax请求包所在,打开后可以查看每一次请求对应的状态包。当我们按顺序输入dog的时候实际上,会发送三个Ajax请求包(d,do,dog)。也就是说我们每录入一个字符,会对应的给该字符发送一个Ajax包。我们根据请求对应的参数来获取哪一个才是所需要的对应请求数据包,这里我们只需要获取参数为dog的数据包即可。
-
通过response返回信息,我们可以看到页面将搜索到的信息内容以json的格式返回。
代码实现:
# -*- coding: utf-8
# @Time : 2020/12/8 23:11
# @Author : ZYX
# @File : request实战之破解百度翻译.py
# @software: PyCharm
import requests
import json
if __name__ == '__main__':
# 破解百度翻译: 获取一个单词所对应的翻译结果
# 获取局部文本数据
# 1.UA伪装
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400'
}
# 2.指定url
post_url = 'https://fanyi.baidu.com/sug'
# 3.post请求处理参数
kw = input('请输入翻译原文:')
param = {
'kw': kw
}
# 4.发送post请求
response = requests.post(url=post_url, data=param, headers=header)
# 5.获取响应数据
# json()方法返回的是obj(必须确认响应的数据是json才可以使用该方法)
search_data = response.json()
# 6.持久化存储数据
fileName = './data/' + kw + '.json'
with open(fileName, 'w', encoding='utf-8') as fp:
json.dump(search_data, fp=fp, ensure_ascii=False) # 中文是不能使用ascii编码的
print('百度翻译破解成功!!!')
本文地址:https://blog.csdn.net/qq_45797116/article/details/110912986