从mysql中取出代理ip_GitHub - lican09/IPProxyTool: 抓取大量免费代理 ip,提取有效 ip 使用...

IPProxyTool

使用 scrapy 爬虫抓取代理网站,获取大量的免费代理 ip。过滤出所有可用的 ip,存入数据库以备使用。

可以访问我的个人站点,查看我的更多有趣项目 awolfly9

个人项目欢迎加微信吐槽

weixin.png

如果在使用中有任何疑问,或者项目中有任何槽点你觉得不满意都可以加我微信向我吐槽。不吐不快~

运行环境

python 2.7.12

运行依赖包

scrapy

BeautifulSoup

requests

pymysql

web.py

scrapydo

lxml

安装 mysql 并启动

安装命令:

$ pip install Scrapy BeautifulSoup requests pymysql web.py scrapydo lxml

下载使用

将项目克隆到本地

$ git clone https://github.com/awolfly9/IPProxyTool.git

进入工程目录

$ cd IPProxyTool

修改 mysql 数据库配置 config.py 中 database_config 的用户名和密码为数据库的用户名和密码

$ vim config.py

---------------

database_config = {

'host': 'localhost',

'port': 3306,

'user': 'root',

'password': '123456',

'charset': 'utf8',

}

运行启动脚本 ipproxytool.py 也可以分别运行抓取,验证,服务器接口脚本,运行方法参考项目说明

$ python ipproxytool.py

如果更新后运行报错,请先删除本地数据库。

项目说明

抓取代理网站

所有抓取代理网站的代码都在 proxy

扩展抓取其他的代理网站

1.在 proxy 目录下新建脚本并继承自 BaseSpider

2.设置 name、urls、headers

3.重写 parse_page 方法,提取代理数据

4.将数据存入数据库 具体可以参考 ip181 kuaidaili

5.如果需要抓取特别复杂的代理网站,可以参考peuland

修改 runspider.py 导入抓取库,添加到抓取队列

可以单独运行 runspider.py 脚本开始抓取代理网站

$ python runspider.py

验证代理 ip 是否有效

目前验证方式:

1.从上一步抓取并存储的数据库中取出所有的代理 IP

2.利用取出的代理 IP 去请求 httpbin

3.根据请求结果判断出代理 IP 的有效性,是否支持 HTTPS 以及匿名度,并存储到表 httpbin 中

4.从 httpbin 表中取出代理去访问目标网站,例如 豆瓣

5.如果请求在合适的时间返回成功的数据,则认为这个代理 IP 有效。并且存入相应的表中

一个目标网站对应一个脚本,所有验证代理 ip 的代码都在 validator

扩展验证其他网站

1.在 validator 目录下新建脚本并继承 Validator

2.设置 name、timeout、urls、headers

3.然后调用 init 方法,可以参考 baidu douban

4.如果需要特别复杂的验证方式,可以参考 assetstore

修改runvalidator.py 导入验证库,添加到验证队列

可以单独运行 runvalidator.py 开始验证代理ip的有效性

$ python runvalidator.py

获取代理 ip 数据服务器接口

在 config.py 中修改启动服务器端口配置 data_port,默认为 8000

启动服务器

$ python runserver.py

服务器提供接口

获取

参数

Name

Type

Description

must

name

str

数据库名称

anonymity

int

1:高匿 2:匿名 3:透明

https

str

https:yes http:no

order

str

table 字段

sort

str

asc 升序,desc 降序

count

int

获取代理数量,默认 100

删除

参数

Name

Type

Description

是否必须

name

str

数据库名称

ip

str

需要删除的 ip

插入

参数

Name

Type

Description

是否必须

name

str

数据库名称

ip

str

ip 地址

port

str

端口

country

str

国家

anonymity

int

1:高匿,2:匿名,3:透明

https

str

yes:https,no:http

speed

float

访问速度

source

str

ip 来源

TODO

参考

项目更新

-----------------------------2017-3-30----------------------------

1.修改完善 readme

2.数据插入支持事务

-----------------------------2017-3-14----------------------------

1.更改服务器接口,添加排序方式

2.添加多进程方式验证代理 ip 的有效性

-----------------------------2017-2-20----------------------------

1.添加服务器获取接口更多筛选条件

-----------------------------2017-2-16----------------------------

1.验证代理 IP 的匿名度

2.验证代理 IP HTTPS 支持

3.添加 httpbin 验证并发数设置,默认为 4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533067.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker卸载 windows版本_DevOps系列 006 - Docker安装

这是DevOps系列的第六节,我们开始安装DockerDebian 上安装可以基于最新debian10的发行版,我现在还用着debian9,不过随后,我会发出Windows / macOs / Ubuntu的参考。安装如果您已经是root用户,则无需使用sudo1、卸载任何…

mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html安装要求安装环境:centos6.3(X64)软件名称 :mysql-cluster-gpl-7.3.8-linux-glibc2.5-x86_64.tar.gz (通用版)管理节点IP:10.61.5.51数据节点-SQL节点IP:10.61.5.52数据节…

tab vue 竖排_vue 实现tab切换保持数据状态

页面做tab切换,由于组件每一次切换都会重新实例化组件,我们想要页面不论怎么切换都仍然保持tab里面的内容不会刷新,减少页面重新渲染以及减少请求实现方法:使用包裹组件 列表页面跳转详情 ,列表页面保持上一次操作状态…

multisim连接MySQL_首次使用Multisim软件进行电路仿真设计

第一次接触使用Multisim进行电路仿真设计,通过使用这款软件,从中也学习到了很多东西,在这里想简单介绍一下这款软件的最主要也是最重要的功能和特点。创建电路,必定要放置元器件,这就需要用到元器件工具栏,…

mysql到pg怎么高效_干货 | Debezium实现Mysql到Elasticsearch高效实时同步(示例代码)

题记来自Elasticsearch中文社区的问题——MySQL中表无唯一递增字段,也无唯一递增时间字段,该怎么使用logstash实现MySQL实时增量导数据到es中?logstash和kafka_connector都仅支持基于自增id或者时间戳更新的方式增量同步数据。回到问题本身&a…

mysql怎么复制信息_mysql关于复制的一些信息参考

1.主库的复制用户密码修改后,在备库修改复制:stop slave;change master to master_user‘username‘, master_password‘password‘;start slave;2.创建复制子用户及其授权:GRANT REPLICATION SLAVE, REPLICATION CLIENT ON . TO ‘repl‘‘%…

java swing web_Java-JFrame-swing嵌套浏览器步骤

Java-JFrame-swing嵌套浏览器步骤一、使用swing嵌套浏览器要实现的功能:通过java的swing实现在一个窗体中嵌套一个浏览器,可以在这个浏览器中将另一个项目的内容显示出来,只需要回去另一个项目首页的url即可,这样另一个项目就可以…

java thread safe_Java 线程安全 Thread-Safety

在 Java 的线程安全是老生常谈的问题。经常是各种写法说法一大堆,感觉很多的来源都是在面试的时候,很多考官都喜欢问线程安全的问题。起源这个问题的起源就是 Java 是支持多线程的。如果对进程和线程是什么不太清楚的话,可以恶补下大学课程《…

java 对象复制字段_利用Java反射机制实现对象相同字段的复制

一。如何实现不同类型对象之间的复制问题?1、为什么会有这个问题?近来在进行一个项目开发的时候,为了隐藏后端数据库表结构、同时也为了配合给前端一个更友好的API接口文档(swagger API文档),我采用POJO来对应数据表结构&#xff…

java 类确定运行时间_java回调函数实例:实现一个测试函数运行时间的工具类

下面使用java回调函数来实现一个测试函数运行时间的工具类:如果我们要测试一个类的方法的执行时间,通常我们会这样做:public class TestObject {/*** 一个用来被测试的方法,进行了一个比较耗时的循环*/public static void testMet…

java socket调用接口_Java中socket接口调用

最近一个项目中接口通讯这一块主要是调用银联系统的socket接口,我方是客户端,即发送请求接收返回报文的一方。在贴代码之前,还是要了解一下关于socket的基础知识。Socket的基本概念1.建立连接当需要建立网络连接时,必须…

protobuf java 编译_Maven项目中,编译proto文件成Java类

新建Maven项目新建一个 Maven 项目:pom定义了最小的maven2元素,即:groupId,artifactId,version。 groupId:项目或者组织的唯一标志,并且配置时生成的路径也是由此生成,如org.codehaus.mojo生成的相对路径为&#xff1a…

java 结构体数组初始化_C数组结构体联合体快速初始化

背景C89标准规定初始化语句的元素以固定顺序出现,该顺序即待初始化数组或结构体元素的定义顺序。C99标准新增指定初始化(Designated Initializer),即可按照任意顺序对数组某些元素或结构体某些成员进行选择性初始化,只需指明它们所对应的数组…

java override 访问权限_java基础之——访问修饰符(private/default/protected/public)

1. 访问修饰符介绍java中的访问修饰符包含了四种:private、default(没有对应的保留字)、protected和public。它们的含义如下:private:如果一个元素声明为private,那么只有同一个类下的元素才可以访问它。default:如果一…

python中scrapy可以爬取多少数据_python中scrapy框架爬取携程景点数据

———————————————————————————————[版权申明:本文系作者原创,转载请注明出处]文章出处:https://blog.csdn.net/sdksdk0/article/details/82381198作者:朱培 ID:sdksdk0——————…

python灰色关联度分析代码_灰色关联分析法步骤 - osc_uwnmtz9n的个人空间 - OSCHINA - 中文开源技术交流社区...

https://wenku.baidu.com/view/dc356290af1ffc4fff47ac0d.html?rec_flagdefault&sxts1538121950212利用灰色关联分析的步骤是:1.根据分析目的确定分析指标体系,收集分析数据。设n个数据序列形成如下矩阵:其中m为指标的个数&a…

aio 系统原理 Java_Java新一代网络编程模型AIO原理及Linux系统AIO介绍

从JDK 7版本开始,Java新加入的文件和网络io特性称为nio2(new io 2, 因为jdk1.4中已经有过一个nio了),包含了众多性能和功能上的改进,其中最重要的部分,就是对异步io的支持,称为Java AIO(asynchronous IO)。因为AIO的实…

centos mysql 5.5 art_Linux CentOS6.5下编译安装MySQL 5.5.51''''

一、编译安装MySQL前的准备工作安装编译源码所需的工具和库yum install gcc gcc-c ncurses-devel perl安装cmake,从http://www.cmake.org下载源码并编译安装wget http://www.cmake.org/files/v2.8/cmake-2.8.10.2.tar.gztar -xzvf cmake-2.8.10.2.tar.gzcd cmake-2.…

java修改默认字符编码_设置默认的Java字符编码?

如何以编程方式正确设置JVM(1.5.x)使用​​的默认字符编码?我已经读过-Dfile.encoding 以前是以往的方式去为旧的JVM …我没有那么奢侈的原因,我不会进入。我努力了:System.setProperty("file.encoding", "UTF-8");并且属…

java api 第一个类是_JAVA常用API:String 类的常用方法

字符串是一个对象,有很多方法可以使用1. length();返回字符串的长度String str "abcd";int len str.length();2. isEmpty(); 仅当当length()为0时返回true,否则返回falseboolean b str.isEmpty();3. getBytes();返回字符串中每个字符的ASCII码(使用平台…