python爬虫爬取**单词
今天做一个关于爬取单词的案例(英译汉,汉译英之间的转化查询,不说废话,直接上代码)
复制代码
import requests #导入requests
import json #导入json库
if __name__=="__main__": #主函数入口
url="https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"; #需要请求的url地址
wd =input("enter a word: "); #获取输入的字符串
# 参数 data
data = {
"i": wd,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": "16248850806696",
"sign": "448f756a8d5aea086c728fc8652cbf7b",
"lts": "1624885080669",
"bv": "818e2470a16ccb5d68270d01f2d298b2",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
# UA伪装 headers
headers = {
'User-Agent': 'Mozilla/5.0(WindowsNT10.0;Win64; x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/89.0.4389.82Safari/537.36',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-2138534787@10.108.160.101;JSESSIONID=aaarowXn9lNpDcxOOSsPx;OUTFOX_SEARCH_USER_ID_NCOO=1785036223.4162219;fanyi-ad-id=112781;fanyi-ad-closed=1;___rl__test__cookies=1624885404817',
'Referer': 'https://fanyi.youdao.com/',
"sec-ch-ua": 'Google Chrome;v = "89","Chromium";v = "89", ";Not A Brand";v = "99"',
"sec-ch-ua-mobile": "?0", "Sec-Fetch-Dest": "empty",


"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-origin"
}
page_text= requests.post(url=url,data=data,headers=headers).text #发起请求
json_dit= json.loads(page_text) #是一个函数 将json格式的数据转化为字典
# 判断汉字(注意:在不同的判断情况下,json_dit['translateResult'][0][0]['tgt']所输出的内容是不同的,以生活life为例)
if(json_dit['type']=='ZH_CN2EN'):
# {'type': 'ZH_CN2EN', 'errorCode': 0, 'elapsedTime': 0, 'translateResult': [[{'src': '生活', 'tgt': 'life'}]]}
print(json_dit['translateResult'][0][0]['tgt']);
# 判断字符串
if (json_dit['type'] == 'EN2ZH_CN'):
# {'type': 'EN2ZH_CN', 'errorCode': 0, 'elapsedTime': 1, 'translateResult': [[{'src': 'life', 'tgt': '生活'}]]}
print(json_dit['translateResult'][0][0]['tgt'])

复制代码
如何判断输入的是中文还是英文?
只需要将两次输入的结果输出仔细观察就可以得出你想要的结果了,也就是类型: type
复制代码
在一开始爬取的url网址如下:
url="https://fanyi.youdao.com/translate_0?smartresult=dict&smartresult=rule";
但是在爬取的时候出现了 errorCode:50 这个错误.百思不得其解之下,去度娘查了很多up主对这个问题的见解,得出的解决方案如下:
只需要将url改为:
url="https://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule";
是的,没错,将translate后面的 _o 去掉就 ok 了.我滴亲娘嘞!
最后我也是想知道到底是为什么错在那里,所以再一次向度娘访问,但是没有找到解决方案.只得放弃了.(如果解决不了问题,就解决出问题的人).
如果有知道的文友,还请不吝赐教!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END