python爬虫爬取有道词典

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",

![chinese.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/1ab8021570c640db8c54de8b36813dc5~tplv-k3u1fbpfcp-watermark.image)
![chinese.png](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/611bdd7387d94038b4179028849c76a4~tplv-k3u1fbpfcp-watermark.image)
        "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'])

![ydEnglish.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2941e7bd6ffe45b8bffb9b0e6b0b1abe~tplv-k3u1fbpfcp-watermark.image)
复制代码

chinese.png

ydEnglish.png
如何判断输入的是中文还是英文?

    只需要将两次输入的结果输出仔细观察就可以得出你想要的结果了,也就是类型: 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
喜欢就支持一下吧
点赞0 分享