菜鸟学Python的第137篇原创文章
喜欢玩爬虫的同学,一定碰到过各种各样的反爬虫的围堵,尤其当你本机的IP会被封了之后,捉急啊。如果自己有一个代理池就好了,这样的话回旋的余地会大很多,其实网上免费的代理很多,我们可以自己在本地搭建一个简单的代理池,还是比较方便的. 这个小例子综合了爬虫和数据库的知识,当是练手也不错的.
要点:
爬虫基础知识
MYSQL数据库基本操作
1.爬取免费的代理IP
网上的代理IP很多,有付费的,也有免费的!这里我们选一个比较有名的免费代理网站,爬取上面所有的高匿代理IP
这个网站的爬取,难度其实并不大,前面有很多篇文章介绍爬虫,这次我就不仔细介绍爬取的方法。我们直接查看网络元素,用requests里的css选择器爬取即可
我们把爬取的结果存在一个字典里面,主要提取IP/PORT/SPEED/TYPE 这4个维度,其实最最重要的是IP和PORT,然后把所有的代理信息放到一个proxies列表里面
2.启动数据库
经常看我的文章的同学可能知道,前面我有一段时间讲数据库的基本知识(学会最简单的数据库看完这7招就够了),当时我讲了最简单的sqlite数据库的入门,讲了几篇基础知识和实战案例. 今天我们换一个数据库玩玩,我们用重量级的MYSQL.
1).启动MYSQL数据库
关于MYSQL数据库的安装大家可以百度一下,不是非常复杂。安装好了之后需要稍微配置一下,然后改一个超级用户密码.我这里是Mac电脑上,我已经安装好了,我们直接启动mysql:
2).新建一个db
这里我们通过命令新建一个db
mysql>CREATE DATABASE proxy;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
Database
+--------------------+
information_schema
article_spider
demo
mysql
performance_schema
proxy
school
sys
test
+--------------------+
9 rows in set (0.00 sec)
3.写数据入数据库
经过前面几步的准备,我们的数据库已经启动了,现在我们要作的事情就是用Python去和数据库连接上,并把代理IP写入数据库中
1).连接数据库
记得要安装MySQLdb库,然后填入一些参数连接数据库,因为是连本机ip设为127.0.0.1
2).写数据入数据库
首先新建一个Table
然后把代理一个一个写入数据库
3).取出任意一个代理IP
用sql语句去查询,从PROXY_TABLE里面随机获取一对IP和PORT的值
4).验证IP的有效性
因为是免费的代理,可能取出来的ip有的时候不一定是有效的。所以我们在用之前一定要检测一下,看看是不是有效的.
如果我们百度的首页来检测代理知否有效,如果返回的code [200,300)之间则为有效的,否则就是废的ip,直接从数据库里面删除,然后递归取下一个。
结论:
经过上面的几步,一个简易的代理池就搭建好了!如果想继续封装作的更好一点,可以用Django/Flask作一个web页面来控制,如果想健壮一点,可以把数据库里的ip进行定时的排序,把最稳定的留下.有兴趣的小伙伴动手练习一下,对功力的提高,大有裨益!
领取专属 10元无门槛券
私享最新 技术干货