python爬虫

requests爬虫需要注意的点

2019-11-05  本文已影响0人  后山小鲨鱼

header头的处理


     requests添加header头后可以访问大部分的网页,下面是访问某个网址时某个请求的header头,和公司业务有关,这里网址就不贴出来了。只分析里面的关键部分User-agent,Referer,Cookie,RequestVerificationToken

  1. user-agent主要有分手机的和电脑的,有些网页会根据不同的ua返回不同的内容,下面给出几个ua。

    电脑ua:

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36

Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; rv:11.0) like Gecko

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

    手机ua:

iPhone---IOS---QQ浏览器 ---Mozilla/5.0 (iPhone 84; CPU iPhone OS 10_3_3 like Mac OS X) AppleWebKit/603.3.8 (KHTML, like Gecko) Version/10.0 MQQBrowser/7.8.0 Mobile/14G60 Safari/8536.25 MttCustomUA/2 QBWebViewType/1 WKType/1

荣耀9---Android---QQ浏览器 ---Mozilla/5.0 (Linux; Android 7.0; STF-AL10 Build/HUAWEISTF-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.2.0_730_YYB_D QQ/7.2.0.3270 NetType/4G WebP/0.3.0 Pixel/1080

2.有些网站会根据header头的referer来判断是否是爬虫,referer即当前所在网页的url,可以自己伪造。

header = {

'Referer':'https://www.baidu.com',

  'User-Agent':'Mozilla/5.0 (Linux; Android 7.0; STF-AL10 Build/HUAWEISTF-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043508 Safari/537.36 V1_AND_SQ_7.2.0_730_YYB_D QQ/7.2.0.3270 NetType/4G WebP/0.3.0 Pixel/1080'

}

r = requests.get("https://www.jianshu.com", headers=header)

3.cookie的话这里一般都会由服务端返回,有些会在客户端用服务端返回的js生成,这里我发现它是由服务端返回的。

这样的话,可以用requests把它提取出来

r = requests.get(url, headers=header)

cookie = requests.utils.dict_from_cookiejar(r.cookies)

下次访问的话可以带上

r = requests.get(url, headers=header,cookies = cookie)

4.RequestVerificationToken的话类似cookie,可以由js生成或者是藏在某个地方返回,用来验证是不是同一个请求。一般藏在返回的html的头部或尾部。这里在返回html文档的尾部找到token。提取出来,header头直接带上即可。

上一篇下一篇

猜你喜欢

热点阅读