• Python爬虫-有道翻译


    有道翻译爬虫实现

      POST请求:

    #有道翻译爬虫
    
    from urllib import request
    import urllib
    import re
    
    #构造请求头信息
    header={
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/81.0.4044.122 Safari/537.36"
    }#谷歌浏览器
    
    #http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 网页上的url
    url="http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
    
    key="白金之星,世界"
    
    #发送到web服务器的表单数据
    formdata={
    "i":key,
    "from":"AUTO",
    "to":"AUTO",
    "smartresult":"dict",
    "client":"fanyideskweb",
    "salt":"15880563488791",
    "sign":"cc2c40d740538fc5edc0380891faef27",
    "ts":"1588053583943",
    "bv":"f9c86b1fdf2f53c1fefaef343285247b",
    "doctype":"json",
    "version":"2.1",
    "keyfrom":"fanyi.web",
    "action":"FY_BY_REALTlME"
    
    }
    
    #经过urlencode转码
    data=urllib.parse.urlencode(formdata).encode(encoding='utf-8')
    
    #如果Request()方法中的data参数有值,那么这个请求就是POST
    #如果没有,就是GET
    req=request.Request(url,data=data,headers=header)
    
    response=request.urlopen(req).read().decode()
    
    #print(response)
    
    # "tgt":"Platinum stars, and the world"}]] 提取Platinum stars, and the world
    pat=r'"tgt":"(.*?)"}]]' #字符串中有"",再用''括起来表示字符串
    
    result=re.findall(pat,response)
    
    print("翻译结果:"+result[0])
  • 相关阅读:
    java如何计算对象的大小
    java多线程实现主线程等待子线程执行完问题
    再次理解多线程线程安全问题(理解java内存模型后)
    关于局部变量在循环里的生存法则
    【CSS3】transform-origin原点旋转
    面向对象编程(本章小结)
    引入在线编程和编译站点
    关于获取素数 一个小程序
    C++ I/O
    HDU2571
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12794872.html
Copyright © 2020-2023  润新知