首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

小白动手搭建一个简单爬虫代理池

菜鸟学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进行定时的排序,把最稳定的留下.有兴趣的小伙伴动手练习一下,对功力的提高,大有裨益!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180203G05PTS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券