听说开源才能走的更高更远,才能让自己成长,所以尝试自己写的爬虫代理框架 IPProxyTools 。各位大神轻喷。
使用 scrapy 爬虫抓取代理网站,获取大量的免费代理 ip 。过滤出所有可用的 ip ,存入数据库以备使用。
github 地址: https://github.com/awolfly9/IPProxyTool
![]() | 1 deleted 2017-02-14 00:57:50 +08:00 抓代理很有用,学习了 |
![]() | 2 imcocc 2017-02-14 03:36:22 +08:00 via iPhone mysql 是不是有点重,有没有考虑 sqlite ? |
![]() | 3 uzumaki 2017-02-14 03:44:05 +08:00 via Android 已 star |
4 songdezu 2017-02-14 04:34:20 +08:00 有了可用 ip list 之后, 怎么用户爬虫本身去轮流循环替换代理? |
![]() | 5 awolfly9 OP |
![]() | 7 Felldeadbird 2017-02-14 09:22:39 +08:00 ip 有时效性啊。楼主入库多久会清理一次啊 |
![]() | 8 hellopython 2017-02-14 09:27:39 +08:00 via iPhone 学习了,谢谢分享!!! |
![]() | 9 awolfly9 OP ![]() @Felldeadbird 抓取的所有免费 ip 或插入到表 free_ipproxy .如果验证之后的有效 ip 会放在单独的表里面。具体表名可以配置,例如抓取豆瓣就放在 douban 中。然后 free_ipproxy 每次抓取的时候回删掉半个小时之前的数据。代理 ip 验证会先验证当前表中之前已经验证过的代理,如果不可用就从当前表中移除,然后在验证 free_ipproxy 中的代理,如果可用就加入到表中。 |
![]() | 10 dongxiaozhuo 2017-02-14 09:52:20 +08:00 已经 star 。不过我的代理都是 zmap 扫描端口,验证请求 http://httbin.org/get 页面,正常返回即入库。数据库中峰值有 7W+ 可用的 http 代理,平均 3w+ 。 |
![]() | 11 wujunze 2017-02-14 09:58:10 +08:00 感谢分享 |
![]() | 12 heissuperhan 2017-02-14 10:02:01 +08:00 via iPhone 免费代理基本没有用 |
![]() | 13 youyoumarco 2017-02-14 10:28:39 +08:00 学习爬虫中。感谢分享 |
![]() | 14 ijustdo 2017-02-14 10:47:29 +08:00 免费代理不做验证 基本好多都没法用的 小伙子加上代理验证吧 这玩意 2007 年就做过 当时分布式抓取 分布式验证 服务端在 linux 客户端在 win 自动清理无效代理 当时是给分布式爬虫用的 |
![]() | 16 hadoop 2017-02-14 11:09:25 +08:00 @dongxiaozhuo 这个数量 nb ! |
![]() | 17 jiezhi 2017-02-14 11:13:03 +08:00 感谢分享, star 为敬 |
![]() | 18 mclxly 2017-02-14 11:14:40 +08:00 都 2017 了,为何不用 Python 3 写呢 |
![]() | 19 onestar 2017-02-14 11:49:20 +08:00 学习了,已 star |
![]() | 21 Clarencep 2017-02-14 13:01:45 +08:00 已 star |
![]() | 22 yesineedroot 2017-02-14 14:12:31 +08:00 感谢分享! |
![]() | 23 kutata 2017-02-14 14:59:37 +08:00 感谢分享~ |
![]() | 24 holyzhou 2017-02-14 15:24:45 +08:00 通过 8000 端口 我怎么能拿到最近的按照响应排序好的可用的 http 地址 好像 api 接口有点弱。 "http://127.0.0.1:8000/select?name=douban",我没理解这里的豆瓣是做什么用的 |
![]() | 25 vh2h 2017-02-14 15:38:21 +08:00 我提一个问题。你开源一个爬虫代理框架,和今天是情人节之间有什么关系呢?这之间没有任何逻辑可言嘛! |
26 lwd2136 2017-02-14 15:40:45 +08:00 不错,已经收藏。 |
![]() | 27 herozzm 2017-02-14 15:47:37 +08:00 via Android 验证是关键,不然大量无用 ip ,功能就废了 |
![]() | 28 qsnow6 2017-02-14 16:10:13 +08:00 @dongxiaozhuo 之前也想要这么操作,有没有示例 |
![]() | 29 Inn0cence 2017-02-14 17:47:26 +08:00 via iPhone 爬虫菜学习。马可 学习下 |
![]() | 30 yuansmin 2017-02-14 18:20:48 +08:00 项目挺不错的,赞一个。不过这个瓶颈主要还是网上的免费代理不靠谱啊 |
![]() | 31 holyzhou 2017-02-14 18:27:34 +08:00 @awolfly9 感谢, 用了半天 还不错 改了 scan 的频率, 拿到的地址比我 1 块钱淘宝买的靠谱些,但也会有连接失败的,再者就是拿到的数量并不多(通过 http://127.0.0.1:8000/select?name=douban 拿到的) |
![]() | 32 awolfly9 OP @holyzhou 可用的代理 ip 会随着时间的增加而增加。由于我抓取的站点比较少,而且那些站点更新免费 ip 也很慢,所以有效的 ip 会随着时间增加而不断积累。失效的 ip 会被淘汰。 |
![]() | 34 |
![]() | 35 botman 2017-02-14 21:22:57 +08:00 好项目,表示去年也写过一个类似的项目,做爬虫必备良品啊,给 lz 顶一个先。 给点建议,既然是写框架就不建议把代理站点硬编码进去,因为现在不少开放代理站点需要进行 js 解析才能拿到代理,所以不同的开放代理站点的解析规则也是不同的,建议把这部分功能里独立开来,规则大家可以一起维护。 |
![]() | 36 liangmishi 2017-02-14 22:08:49 +08:00 感谢开源~ |
![]() | 37 Nyloner 2017-02-14 23:10:40 +08:00 哈哈,前段时间也写了一个类似项目: http://nyloner.cn/proxy |
38 mingyun 2017-02-14 23:16:32 +08:00 130+ 收藏,厉害了 |
![]() | 39 anexplore 2017-02-14 23:20:08 +08:00 年前搞了一个扫描 ip:port 查找 http 代理的,功能还不完善。 https://github.com/anexplore/proxydetector.git |
![]() | 40 DevilBin 2017-02-15 08:32:16 +08:00 via Android 已 star |
![]() | 42 fuxkcsdn 2017-02-15 11:34:45 +08:00 那个...运行了半小时左右, 66ip 就抓到 6 个代理...不合理啊...只抓取首页吗?? 半小时就只抓到 279 个代理 IP ,略少... |
![]() | 43 awolfly9 OP @fuxkcsdn 我只抓了首页,因为在之前的测试中发现后面的很多 IP 都失效了,抓下来也没什么作用。如果想要抓取多页,只需要到 sixsixip.py 中 self.urls = ['http://m.66ip.cn/%s.html' % n for n in range(1, 2)] 更改 2 为 想要抓取的页数 |