爬虫之修改请求头
爬虫第一篇
由于我是自学爬虫的第一篇博客,也许是最后一篇,全看我心情。
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用户的访问,会被终止。来我们看一下
通过这段代码来看自己的request请求信息的请求头是什么。
这里清楚地写着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方法里面,就可以改变你的狗头了,你已经无懈可击了个屁了。
你看,请求头变成了这个,好了你可以成功的访问这个页面并且爬数据了。
今天就先讲这么多
有缘还会再见。