爬虫基础-----爬虫的浏览器伪装技术

一、前言:本博客的摘取内容是看视频总结出的,在进行下面的原理介绍中,是在爬取CSDN博客报403错误(对方服务器会对爬虫进行屏蔽)的前提下解释的,事实证明目前爬取CSDN不用添加报头

二:原理介绍

(1)首先打开任何一个浏览器-----这里以百度为例:

打开百度浏览器之后,按快捷键f12(相当于检查网页的信息),会出现下面这种界面:

爬虫基础-----爬虫的浏览器伪装技术_第1张图片

备注:一开始可能出现的不是这样,你需要做的就是刷新界面

(2)找到Network---从Name点击任意一个内容(从右栏找到Request Headers(头信息))------这一步的作用是找到用户代理,获取报头内容(即user-agent的内容----一定要复制!复制!复制!它的内容):不同浏览器有不同的内容

爬虫基础-----爬虫的浏览器伪装技术_第2张图片

(3)说明:由于urlopen()对一些HTTP的高级功能不支持,所以修改报头,可以使用urllib.request.build_opener()进行,实现浏览器的模拟。案例代码如下:

# 浏览器的伪装
import urllib.request
url = "http://blog.csdn.net"
# 头文件格式:header = ("User-Agent",具体用户值)
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5944.400 LBBROWSER/10.1.3378.400")
opener = urllib.request.build_opener()
# 添加到报头
opener.addheaders=[headers]
# 开始爬虫
data = opener.open(url).read()
#data = urllib.request.urlopen(url)
fh = open("E:\\Pythondemo\\Python-test\\PythonLX\\ua.html","wb")
fh.write(data)
fh.close()
print(len(data))

备注:头文件格式需用元组格式具体操作看代码,最后一个print(len(data))的作用:一是运行结果不给任何提示,在本地磁盘才能看到ua.html,print的作用也相当于检查了一下代码是否运行成功,二是获取爬取的字节数

(4)运行结果展示:

pycharm运行结果:

爬虫基础-----爬虫的浏览器伪装技术_第3张图片

我的本地磁盘----E:\\Pythondemo\\Python-test\\PythonLX出现的情况:

爬虫基础-----爬虫的浏览器伪装技术_第4张图片

(5)点击ua.html之后出现的内容:

爬虫基础-----爬虫的浏览器伪装技术_第5张图片

哈哈哈,是不是出现了一个很low的内容------如果不添加报头,你在往后爬取你想要的信息是不能实现的,403错误

备注:在这里这块内容先到这里,可能会用粉丝宝宝问这样几个问题:①:为什么用data = opener.open(url).read()这个而不使用urlopen呢?即data = urllib.request.urlopen(url),这里可以实践一下会报错的:

爬虫基础-----爬虫的浏览器伪装技术_第6张图片

原因:这里需要知道的是urlopen默认是不添加报头的,所以没有反应!!!

(这里就结束了,博主想说的是这只是一个介绍,它的具体实操,还有他如何用后面我还会增加--------未完待续!!!)

 

 

你可能感兴趣的:(python-基础爬虫)