爬虫之修改请求头

爬虫第一篇

由于我是自学爬虫的第一篇博客,也许是最后一篇,全看我心情。

import requests # 导入requests模块,用来获取网页的
url='某网址'       #你要爬取的网页的网址
try:               #这个不讲了,不懂看前面的python基础模块。
    r=requests.get(url)    #通过get方法获取一个url的response对象,就是r
    r.raise_for_status()   # 这个方法用来返回网络响应码,200未成功获取,非200全都是失败,直接抛出异常
    r.encoding=r.apparent_encoding #这个方法是用来确定编码的,一般的网站编码都是什么ISO的,然后备用编码才是utf8,要看一下,这里一他的备用编码为标准获取。
    print(r.text[1000:2000])# 打印获取的内容
except:
    print('爬取失败') #爬取失败执行这句

我来依次解释一下每行的作用,写在每行后面注释好了。。

为什么不放图。。因为我发现放图,比放代码麻烦多了

以上的代码爬取百度页面没什么问题,但是有一些网页是做过处理的,他只接受浏览器的访问,而我们上述的代码会被发现是python用户的访问,会被终止。来我们看一下

img

通过这段代码来看自己的request请求信息的请求头是什么。

img

这里清楚地写着user-agent是python请求,以这种请求去爬人家的网页,无异于高举我是小偷我来偷钱的旗子去银行打转。

所以你不能这样直白,不能这样忠实,你得伪装,得支棱起来,你得表现得像一个普通的用户通过浏览器去访问网页一样,神他妈不知,鬼他妈不觉的把数据爬走。

这个时候通过键值对的形式,来吧你的请求头给改掉。

import requests
url='https://www.amazon.cn/gp/product/B01KQ9DNV2/ref=s9_acsd_al_bw_c_x_2_w?pf_rd_m=A1U5RCOVU0NYF2&pf_rd_s=merchandised-search-6&pf_rd_r=5S57RBWWA2E9F2E4J5PX&pf_rd_t=101&pf_rd_p=8de7b4df-8fdc-4255-a322-c08f47a0d585&pf_rd_i=2071292071'
try:
    kv={'user-agent':'Mozilla/5.0'}
    r=requests.get(url,headers=kv)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    print(r.text[1000:2000])
    print(r.request.headers)
except:
    print('爬取失败')

搞一个字典,里面写上这个,mozilla/5.0,这是什么呢,这好像是浏览器的一种,这个时候放进get方法里面,就可以改变你的狗头了,你已经无懈可击了个屁了。

img

你看,请求头变成了这个,好了你可以成功的访问这个页面并且爬数据了。

今天就先讲这么多

有缘还会再见。

posted @ 2019-08-21 18:50  chanyuli  阅读(519)  评论(0编辑  收藏  举报