一、浏览器模拟——Header属性
有的时候,我们无法爬取一些网页,也就是说会出现403错误,这是因为这些网页为了防止有人恶意去采集其信息所以进行了一些反爬虫的设置。
为了可以获取这些数据我们使用一些两种方法:
1、使用 build opener()
由于urlopen()不支持HTTP的高级运用所以我们要修改头报。可以使用urllib.request.build_opener进行如下面例子:
#!/uer/bin/env python #-*-coding: utf-8 -*- import urllib.request ###导入import urllib.request模块 ur1="http://www.cnblogs.com/alsely/archive/2017/04/19.html" headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")###头报 file=urllib.request.build_opener() file.addheaders=[headers] data=file.open(ur1).read()
print(data)
fd=open("D:/python爬虫文件目录/kood","wb")
fd.write(data)
fd.close()
这样就可以获取:
方法二、使用add_header()添加头报
在这我做简单的介绍:
1 #!/uer/bin/env python 2 #-*-coding: utf-8 -*- 3 import urllib.request ###导入import urllib.request模块 4 5 rep=urllib.request.Request("http://www.cnblogs.com/alsely/archive/2017/04/19.html") 6 rep.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36") 7 data=urllib.request.urlopen(rep).read() 8 print(data)
同样也可运行。
下面让我们看看具体步骤:
1、首先设置爬取的网址,然后使用rllib.request.Request()创建一个Request()对象
并且进行赋值给rep。
2、随后我们就用add_header()方法添加报头信息。
3、我们使用urlopen()打开Request对象即可以打开相应网址,但是在这我们在其后面添加一个read()这样就是打开并读取。