python学习(四)--POST请求

2019-04-11 10:15:26来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

from urllib import request
import urllib
import re

#网页版有道翻译是ajax的post请求。

#浏览器请求地址http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
#但是在抓取时,路径有所变化,具体原因不明。后续要了解下 translate_o -》 translate
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"

#搜狗浏览器的 模拟浏览器
header = {"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
}
key = str(input("请输入要翻译的词语:"))
#key = "中国"

#这个formData是浏览器发送请求copy过来的
formData = {
"i":key,
"from":"AUTO",
"to":"AUTO",
"smartresult":"dict",
"client":"fanyideskweb",
"salt":"15536694414373",
"sign":"cddcc6c6092b57a04c546a2e075e2218",
"ts":"1553669441437",
"bv":"f355c521b6e13c15aa35c72a097b7786",
"doctype":"json",
"version":"2.1",
"keyfrom":"fanyi.web",
"action":"FY_BY_REALTlME",
"typoResult":"false"
}

data = urllib.parse.urlencode(formData).encode(encoding = 'utf-8')
#当请求中存在data时就属于POST请求
req = request.Request(url, data = data , headers= header)

result = request.urlopen(req).read().decode()

print(result)

#用正则取出有用数
pattern = r'"tgt":"(.*?)"}'

va = re.findall(pattern, result)

print(va)

原文链接:https://www.cnblogs.com/fuguang/p/10607974.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:【python】面向对象编程之@property、@setter、@getter、@delete

下一篇:用turtle库显示汉诺塔问题的过程