python爬虫,处理POST请求

系统 1936 0

我们在python爬虫写脚本时,往往会遇到些问题,小编前几天也遇到了个小问题。在这里想跟大家分享下,以免大家走更多的弯路
列如我要去有道翻译,去爬取我们自己所翻译的东西。

            
              import urllib.request
import urllib.parse

url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"}
formdata={
"i":" 加油",
"from":" AUTO",
"to": "AUTO",
"smartresult":"dict",
"client": "fanyideskweb",
"salt":" 15687710834733",
"sign": "d0b955f562cc4dfa3d33448f438b09b1",
"ts": "1568771083473",
"bv": "53850875da92527c18a78e804f4c65b4",
"doctype":"json",
"version":" 2.1",
"keyfrom": "fanyi.web",
"action":" FY_BY_CLICKBUTTION",
"typoResult": "true"}
data=bytes(urllib.parse.urlencode(formdata).encode('utf-8'))
request=urllib.request.Request(url,data=data,headers=headers)
response=urllib.request.urlopen(request)
print(response.read().decode('utf-8'))


            
          

脚本其实大家都会,但是随着脚本和反爬虫的机制也在更新。
问题1,大家写完脚本会出现 {"errorCode":50} 这样的错误。原因是我们给的 Request URL: http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
只需要将改成 Request URL: http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule 即可解决
问题2,有的同学看质料上写,会出现以下类似问题。
python爬虫,处理POST请求_第1张图片
其实,你写的代码根本就没有这么多,但它给我报错以下多少多少行出错。这个问题大多数都是那个地方少标识符
还是以上题为列

            
              headers={"User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"}

            
          

改成

            
              headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.162 Safari/537.36"}

            
          

如果你用Chrome浏览器,点击右键“检查", 再点击"network", 你就会发现真正处理翻译并返回翻译结果的url是http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule。你还会了解发送请求的方式是POST,返回的相应数据是JSON格式。如果请求方式是POST,我们一定还要了解POST什么数据,服务器才会返回正确的响应(Response)。
如果你继续下拉Headers页面,你就会发现需要POST的数据Form Data里不仅包含了我们需要翻译的词(i), 还包括其它加密用的salt和签名字符串sign。我们在请求里必需把这些data加进去,有道才会返回翻译结果。这就是明显的反爬机制啊。当然高人无处不在,弄清了salt和sign的生成原理,就可以轻易破解有道的反爬机制了。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论