Python爬虫 — 百度翻译
2021-04-25 04:29
标签:请求 coding info pen baseurl 运行 col des url 打开F12 尝试输入单词girl,会发现每敲一个字母后都有请求 请求地址是http://fanyi.baidu.com/sug 利用NetWork-All-Hearders,查看发现Fromdata的值是 kw:girl 检查返回内容格式,发现返回的是json格式的内容,所以需要用到json包 Python爬虫 — 百度翻译 标签:请求 coding info pen baseurl 运行 col des url 原文地址:https://www.cnblogs.com/yytest/p/13259907.html一、基本思路
二、实现过程
from urllib import request,parse
import json
# 伪造ua
from fake_useragent import UserAgent
import chardet
baseurl = ‘https://fanyi.baidu.com/sug‘
kw = input("请输入你要翻译的单词:")
# 存放用来模拟form data的数据一定要是dict格式
data = {
‘kw‘: kw
}
# 需要使用parse对data进行编码
data = parse.urlencode(data).encode()
# 伪造一个随机的ua
ua = UserAgent()
# 构造一个请求头
# request要求传入的请求头是一个dict格式
headers = {
# 因为使用post,至少应该包括Content-Length字段
‘Content-Length‘: len(data),
‘User-Agent‘: ua.random
}
# 为了更多地设置请求信息,单纯的urlopen函数不够用了
# 使用Request类来模拟请求信息
r = request.Request(baseurl, data, headers)
rsp = request.urlopen(r)
temp = rsp.read()
# 自动检测编码
codeset = chardet.detect(temp)
json_data = temp.decode(codeset.get(‘encoding‘, ‘utf-8‘))
json_data = json.loads(json_data)
print("释义如下:")
for item in json_data[‘data‘]:
print(item[‘k‘],":",item[‘v‘])
三、运行结果