亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述Python爬虫从0到1 | 入门实战:360翻译 ——requests库之POST方法相关的知识,希望能为你提供帮助。
这次我们来用 requests 实现一个简单的能够中英互译的翻译器。运用到 post 方法。
准备安装 requests 库:
快捷键 Windows+R 打开运行控制框,输入 cmd,进入命令行,输入:
pip install requests
导入:
import requests
网页分析首先进入360翻译官网,右键,点击检查元素,调出开发者模式:
文章图片
接下来我们点击
Network
(网络),看到左上角有一个点,如果它变成红色,那么就可以开始录制行为,否则点击这个点,使他变成红色:文章图片
接下来我们在翻译栏内任意输入一个单词(这里以“你好”为例),点击翻译(不要做多余的动作),浏览器会记录下我们所做的网络活动。我们可以看到我们所发出的请求的网址,在这些网址中寻找最有可能的一条(可能会有些麻烦,慢慢找,不着急),点开来查看我们的活动。怎么找到自己需要的是哪一条呢,这里有一个方便的方法,一个个点开来,在Preview(预览)栏,看到它有出现我们需要的信息,那么大概率就是这个了:
文章图片
在这里我们是找到一个
search
开头的链接,点进去,在 Preview 一栏可以看到有翻译的结果,位置为:data
>
fanyi
。接下来切到
Headers
一栏,这里有网页请求的一些信息:文章图片
URL是进行网页请求的地址,注意这个与你在上面搜索栏看到的是不一样的。Method 后的POST是请求方式。Status Code是状态码,200表示请求成功。POST方式就要使用类的 post 方法:
requests.post(url=<
url地址>
, headers=<
请求头>
, data=https://www.songbingjia.com/android/<
信息>
)
首先是 url,我们需要一个字符串类型的变量来存储这个 url 地址,一般来说,只需要问号前面的部分即可:
url = \'https://fanyi.so.com/index/search\'
接下来是请求头,请求头就是 Requests Headers 这一部分,用一个字典存储:
文章图片
比较重要的是 cookie:
headers = {
\'cookie\': \'QiHooGUID=4A036...\'
}
这个 cookie 是什么呢,其实它的作用是传输了用户的信息、身份,就好比你登录了 CSDN 之后,你再进入这个网页时就不需要再登陆了,因为浏览器已经保存了你的身份信息并发给了网页。所以我们在进行一些需要登录操作的网页请求时,必须带上 cookie。
但是我们发现它会报错,猜测是因为我们的请求头缺少了些必要的信息,我们把 Headers 全部复制上去,这样就不会有错了。然后我们一条条删除,查找出必要的哪一条。最后发现
pro
为必要的信息:headers = {
\'Cookie\': \'QiHooGUID=4A0361B33E8B3D5816820A7B6AAC97FB.1626956503010;
__guid=22834110.4129050398887859700.1626956506548.7964;
__huid=11Zr1Kp5K8ysG624Qkw3uZ1kJkpbPkorkhddyIEXj9EWs%3D;
__DC_gid=22834110.425238169.1626956506599.1626956570554.3;
Q_UDID=14c66d71-1de2-3db0-9091-a7c84e24fab8;
count=1;
gtHuid=1\',
\'pro\': \'fanyi\',
}
最后是 data,再滑到最底部,看到一些信息,这就是 data,同样以字典形式保存:
文章图片
我们可以发现,在data中,最重要的是
query
一项,表示要转换的单词。经试验我发现,eng
项表示是否从英文转中文,如果是,则为1,否则为0。我们把这些都放到 data 中去:data = https://www.songbingjia.com/android/{
/'eng\': \'0\',
\'query\': \'你好\'
}
请求接下来我们可以发送请求获取请求结果:
respond = requests.post(url=url, data=https://www.songbingjia.com/android/data, headers=headers)
接下来看看请求结果:
print(respond.status_code) # 打印状态码
print(respond.text) # 打印返回文本
print(respond.json()[\'data\']) # 打印返回文本经json解码后的data部分
输出:
文章图片
最后,我们根据翻译结果的位置打印出翻译结果:
print(r.json()[\'data\'][\'fanyi\'])
输出:
Hello
这样,我们就完成了翻译中文的功能。
如果要翻译英文,就只需将 data 中的
eng
设为 1 即可:url=\'https://fanyi.so.com/index/search\'
headers = {
\'Cookie\': \'QiHooGUID=4A0361B33E8B3D5816820A7B6AAC97FB.1626956503010;
__guid=22834110.4129050398887859700.1626956506548.7964;
__huid=11Zr1Kp5K8ysG624Qkw3uZ1kJkpbPkorkhddyIEXj9EWs%3D;
__DC_gid=22834110.425238169.1626956506599.1626956570554.3;
Q_UDID=14c66d71-1de2-3db0-9091-a7c84e24fab8;
count=1;
gtHuid=1\',
\'pro\': \'fanyi\',
}
data = https://www.songbingjia.com/android/{
/'eng\': \'1\',
\'query\': \'hello\'
}r = requests.post(url, data=https://www.songbingjia.com/android/data, headers=headers)
print(r.json()[/'data\'][\'fanyi\'])
输出:
你好
完整的翻译器为了实现中英互译,我们可以在开始时请用户输入转换的语言以及单词,然后再翻译。完整代码如下:
import requestslanguage = input(\'请选择输入语言(中文/英文):\')
eng = 1 if language == \'英文\' else 0
query = input(\'请输入要翻译的单词:\')url=\'https://fanyi.so.com/index/search\'
headers = {
\'Cookie\': \'QiHooGUID=4A0361...\',
\'pro\': \'fanyi\',
}
data = https://www.songbingjia.com/android/{
/'eng\': eng,
\'query\': query
}r = requests.post(url, data=https://www.songbingjia.com/android/data, headers=headers)
print(r.json()[/'data\'][\'fanyi\'])
后记这篇文章就到这里了,点个赞支持一下吧!
下一篇文章 我们将学习网页请求的方法之二:GET。
本文收录于专栏:Python爬虫
关注作者,持续阅读作者的文章,学习更多python知识!
https://blog.51cto.com/u_15310475
【Python爬虫从0到1 | 入门实战(360翻译 ——requests库之POST方法)】2021/7/28
推荐阅读
- 使用bmp的方式监控BGP状态
- 使用OpenCVselenium解决滑块验证码
- 绝密!Python告诉你刷分升级神器背后的原理!这篇文章差点没过审
- Python爬虫 | 爬取酷我音乐并下载——requests库之GET方法(免费听歌!!!)
- 使用selenium实现爬取BOSS直聘职位并写入数据库案例
- 针对不同场景的Python合并多个Excel方法
- 2.2-2.7 python基础笔记 细讲数据类型
- 非平衡数据(imbalanced data)的简单介绍
- 教你用python爬虫下载1w+『ppt模板』,再也不用付费去购买啦!