Request 学习2

POST请求

import requests,json

headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
post_data={'i':'人生苦短,我用python',
           'from':'AUTO',
           'to':'AUTO',
           'smartresult': 'dict',
            'client': 'fanyideskweb',
            'salt': '15824553046227',
            'sign': 'cadcb0996f6c68f900d613c699f176f7',
            'ts': '1582455304622',
            'bv': '95cc823c95f26a8cb69de36467fdb626',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTlME'}
post_url='http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
r=requests.post(post_url,data=post_data,headers=headers)
print(r.content.decode())
dict_ret=json.loads(r.content.decode())
print(dict_ret)
print(dict_ret['translateResult'])

 结果:

{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":1,"translateResult":[[{"src":"人生苦短,我用python","tgt":"Life is too short, I use python"}]]}
{'type': 'ZH_CN2EN', 'errorCode': 0, 'elapsedTime': 1, 'translateResult': [[{'src': '人生苦短,我用python', 'tgt': 'Life is too short, I use python'}]]}
[[{'src': '人生苦短,我用python', 'tgt': 'Life is too short, I use python'}]]

代理(proxies参数)

  • 代理池,随机使用某一ip
  • 检查ip地址可用性---添加requests超时参数或在线代理ip质量检测网站
proxies={'http':'159.89.40.245'}#'http://39.137.95.69:80'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36'}
r=requests.get('http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule')
print(r.status_code)

cookie和session

  • cookie数据放在客户的浏览器上,session数据放在服务器上

  • cookie不安全,别人可分析存放在本地的cookie并进行cookie欺骗

  • session会在一定时间内保存在服务器上。当访问量增多,会比较占用服务器的性能

  • 单个cookie保存的数据不能超过4k,很多浏览器限制一个站点最多保存20个cookie

  • 带上cookie和session能够请求到登录后的页面

  • cookie和session一般和一个用户对于,请求频繁,易被识别为爬虫

  • 不需要使用cookie,尽量不使用,使用最好准备cookie池

  • session实现客户端和服务端的会话保持。会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 

session=requests.session()                               #保持会话
session.get("http://www.baidu.com/",headers=headers)
cookiejar=response.cookies                               #返回CookieJar对象
cookiedict=requests.utils.dict_from_cookiejar(cookiejar) #将CookieJar转为字典

 

你可能感兴趣的:(爬虫)