從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.pswp.cn/news/533067.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533067.shtml
英文地址,請注明出處:http://en.pswp.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碼(使用平臺…