有一部分网站是通过检测同一IP短时间内多次访问同一页面来进行反爬虫,为了应对这种反爬虫机制,使用IP代理就可以解决。可以利用scrapy写一个爬虫,爬取网上免费公开的代理ip,检测后全部保存起来。有了大量代理ip后可以每请求几次更换一个ip,这在requests或者urllib2中很容易做到,这样就能很容易的绕过这种反爬虫机制。下面就详细说明一下scrapy抓取免费代理IP构建自有的代理IP池的过程:
以抓取西刺代理网站的高匿IP并存储到mysql数据库为例
西刺网:http://www.xicidaili.com/nn/
运行环境:scrapy1.0.3 python2.7.10 需要安装MySQLdb模块
pip install mysql-python
spider的编写步骤:
1、定义抓取的网站
2、定义需要抓取的链接
3、用xpath对网站内容进行解析
填写settings.py文件中的数据库用户名和密码,之后在mysql中导入proxy.sql文件,数据表名称及属性如下所示:
运行scrapy:
scrapy crawl xici
不到一分钟即可抓取3000多代理ip,妈妈再也不用担心ip被封啦,本文源码下载地址:http://pan.baidu.com/s/1c29kkMG,获取密码请在Python中文社区公众号底部回复代理二字。