poxy是用python3.4写的.用于抓取代理IP.
它有比较强的扩展能力.代理获取规则是通过配置文件定制的.
命令行帮助:
-h, --help 显示帮助并退出.
-o [OUT], --out [OUT] 将捕获的代理ip放到指定的文件里.没有指定文件将在stdout屏幕输出.
-f [FORMAT], --format [FORMAT] 捕获的ip,端口的输出格式:默认为"{0}:{1}\n".其中{0}是在pattern中捕获的第一个符合的group.以此类推.
--check 检查代理ip的可用性.
--target [TARGET] 指定用于检查代理的url. 默认检查的网址为:
319K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3@1`.
--config [CONFIG] 代理捕获的行为规则文件 默认: proxy.settings
默认配置文件中,我加了4个代理ip的网站,分别是:
989K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4W2G2N6h3c8S2K9h3I4A6i4K6u0W2L8X3g2@1i4K6u0o6N6%4N6%4i4K6u0W2K9r3q4G2k6r3q4A6L8r3W2A6M7q4)9J5k6h3y4G2L8g2)9J5b7%4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5b7%4N6%4N6#2)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6s2m8J5L8%4S2&6i4K6u0W2L8X3g2@1i4K6u0W2
自己可以加入新的代理获取规则.
由于是通过规则获取代理的,所以总是可以获取到最新的代理ip.
使用默认代理获取规则,可以获取1000左右的代理ip.
2.获取代理的行为规则配制文件: 具体看帮助文件.
最新的版本可以在github上下载:
188K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6&6N6h3k6W2L8X3N6*7K9X3A6Q4x3V1k6H3L8%4S2&6i4K6u0W2k6$3W2@1
一个简单使用示例:
用于获取支持
c1dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4G2L8g2)9J5k6h3S2C8i4@1f1^5i4@1q4q4i4@1u0r3i4@1f1&6i4K6V1%4i4@1q4q4i4@1f1%4i4K6W2m8i4K6R3@1i4@1f1@1i4@1u0n7i4@1p5K6i4@1f1%4i4K6V1H3i4K6R3$3d9g2m8Q4x3X3g2Q4x3X3g2Q4x3X3g2Q4x3X3g2Q4x3X3g2Q4x3X3g2Q4c8e0g2Q4b7e0c8Q4b7e0N6Q4c8e0k6Q4b7e0k6Q4z5o6u0Q4c8e0k6Q4z5f1y4Q4z5o6V1I4x3o6m8Q4c8e0g2Q4b7U0N6Q4b7e0k6Q4c8e0g2Q4z5p5k6Q4b7U0y4Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0N6Q4z5e0c8Q4b7e0S2Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4z5e0m8Q4z5o6k6u0f1q4)9J5k6b7`.`.
要想获取更多,自己写一下配置规则即可.具体看帮助文件.
关于配置规则的说明,先看doc文件夹下面的帮助.
这里给一个简单例子:
假设一个完整的规则配置文件poxy.settings:
//----------------------------------------------------
{
"xici"://配置名称
{
"base_url"://数据网页,不是最简单形式时是递归定义的,也可以直接写成"base_url":["
b41K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5c8X3&6F1i4K6u0r3"]这样的形式,但是功能会弱很多.
{
"base_url":["
9b0K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8H3`.`."],//基本网址
"selector": ["ul#nav > li > a"],
"sequence": [1,2],//在上面的selector的定位和container_attr(优先于pattern,因此这里pattern可省略)的选择下,有多个结果,1和2表示选取结果中的其中两个网址:
// 即(不用管是否是相对网址)
15cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5c8X3&6F1i4K6u0r3i4K6u0o6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5c8X3&6@1i4K6u0r3i4K6u0o6
//也就是国内高匿代{过}{滤}理和国内普通代{过}{滤}理.
"pattern": ["href=\"([^\\s]+)\""],
"container_attr":["href"]
},
"selector":["table#ip_list > tr"],//在上面的选择下,base_url的结果会是"base_url":["
9d1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5c8X3&6F1i4K6u0r3","
369K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6i4S2A6j5$3W2Q4x3X3g2F1k6i4c8Q4x3X3g2U0L8#2)9J5c8X3&6@1i4K6u0r3"]
"pattern":["([\\d]+\\.[\\d]+\\.[\\d]+\\.[\\d]+)[^\\d]+([\\d]+)"]//再综合selector的定位和pattern对ip地址的捕获,获得需要的代{过}{滤}理IP.
}
}
//----------------------------------------------------------
工作行为类似于爬虫,即给定一个基础网页,通过一定的规则自己爬取中间网页,最后对最终网页数据进行捕获.
其中爬取规则是递归定义的.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课