1概述
爬虫在Python中是个实现起来比较简单,关键在于网页的分析和内容的抓取。最近由于个人需要写了些内容,这里总结下爬虫相关的内容。
本文爬虫相关实现没有使用scrapy框架,通过urllib请求、bs4来实现。
2网络请求
网络请求部分用到urllib模块中的request类,如果需要控制 请求头或带请求数据的时候需要用到urllib.request的Request类。
l 发送一个简单的Get请求
l 发送Get请求,带请求头修改
l 发送带数据的Post请求
设置请求头部内容的方式:
l 通过Request对象添加
l 通过urllib.request.Request(headers={})关键字参数设置请求头
设置请求超时
l 对整个socket层设置超时,后面在再用到socket不用重新设置,单位秒
l 睡眠time模块
time.sleep(10)
l request.urlopen(req,timeout=15)
设置代理
1. 代理设置步骤
设置代理ProxyHandler、初始化opener、[设置请求头]、安装opener、使用urlopen
使用install_opener方法之后,会将程序默认的urlopen方法替换掉。也就是说,如果使用install_opener之后,在该文件中,再次调用urlopen会使用自己创建好的opener。如果不想替换掉,只是想临时使用一下,可以使用opener.open(url),这样就不会对程序默认的urlopen有影响。
2. 获取代理IP。上面的步骤中需要用 带代理IP,网上可以找到很多免费的IP地址,这里我自己的实现是爬取的http://www.xicidaili.com 这个网站的
使用只需要
IP地址测试可以通过http://www.whatismyip.com.tw/ 这个网站测试,代码如下
如果IP可用,返回的数据中会有我们请求的实际IP地址。
一次可以爬取到大约100个ip地址,不过不是所有都能用,如果使用的话,发现不能用就从list中移除,这样可以大大提高爬虫的效率。
3获取数据
爬取到网站内容后需要筛选获取我们需要的数据。这里使用bs4,即 Beautiful Soup.官方文档的:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/#id1
具体不再赘述。注意一点,有些请求接收的格式为gzip的,需要解压缩,不然会出现乱码的情况。
4总结
使用Python写网络爬虫非常方便,学会这个技能非常有用,如聚合我们需要的内容,分析网络数据,通知目标内容更新等 。
以上。