python实战:通过伪装浏览器爬取信息

1、对于网站url为http协议的,我们可以直接通过urlopen()直接爬取
例如:
import urllib.request 

#爬百度首页
url='http://www.baidu.com/'
#读取响应信息并解码
html=urllib.request.urlopen(url).read().decode('utf-8')
#打印爬到的信息
print(html)
爬取结果为
python实战:通过伪装浏览器爬取信息_第1张图片
2、但当我们要爬url为https协议的网站,就会返回403错误或报其它错误。这是因为对方服务器识别出是爬虫,把我们屏蔽了。
例如把url换成" https://www.qiushibaike.com/"  则python会报错如下图
python实战:通过伪装浏览器爬取信息_第2张图片
3、解决方法:通过模拟浏览器登陆来实现伪装。即通过设置 User-Agent的方式来达到隐藏爬虫身份的目的。
原理:User-Agent存放于Headers中,服务器就是通过查看Headers中的 User-Agent来判断是谁在访问的。

我们可以通过chrome的审查元素功能来查看 User-Agent,然后添加进去
python实战:通过伪装浏览器爬取信息_第3张图片
from urllib import request

#爬嗅事百科
url='https://www.qiushibaike.com/'
#写入User-Agent,采用字典形式
head={}
head['User-Agent']='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
#创建Request对象并添加heads
req=request.Request(url,headers=head)
#传入创建好的Request对象
response=request.urlopen(req)
#读取响应信息并解码
html=response.read().decode('utf-8')
#打印爬到的信息
print(html)

执行上面代码,结果如下图:
python实战:通过伪装浏览器爬取信息_第4张图片


你可能感兴趣的:(python3.5)