日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 爬虫工具 butter_GitHub - TheButterflyOdor/proxy_pool: Python爬虫代理IP池(proxy pool)

發布時間:2024/9/27 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 爬虫工具 butter_GitHub - TheButterflyOdor/proxy_pool: Python爬虫代理IP池(proxy pool) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲IP代理池

______ ______ _

| ___ \_ | ___ \ | |

| |_/ / \__ __ __ _ __ _ | |_/ /___ ___ | |

| __/| _// _ \ \ \/ /| | | || __// _ \ / _ \ | |

| | | | | (_) | > < \ |_| || | | (_) | (_) || |___

\_| |_| \___/ /_/\_\ \__ |\_| \___/ \___/ \_____\

__ / /

/___ /

下載安裝

下載源碼:

git clone git@github.com:jhao104/proxy_pool.git

或者直接到https://github.com/jhao104/proxy_pool 下載zip文件

安裝依賴:

pip install -r requirements.txt

配置Config.ini:

# Config.ini 為項目配置文件

# 配置DB

type = SSDB # 如果使用SSDB或redis數據庫,均配置為SSDB

host = localhost # db host

port = 8888 # db port

name = proxy # 默認配置

# 配置 ProxyGetter

freeProxyFirst = 1 # 這里是啟動的抓取函數,可在ProxyGetter/getFreeProxy.py 擴展

freeProxySecond = 1

....

# 配置 HOST (api服務)

ip = 127.0.0.1 # 監聽ip,0.0.0.0開啟外網訪問

port = 5010 # 監聽端口

# 上面配置啟動后,代理api地址為 http://127.0.0.1:5010

啟動:

# 如果你的依賴已經安全完成并且具備運行條件,可以直接在Run下運行main.py

# 到Run目錄下:

>>>python main.py

# 如果運行成功你應該看到有4個main.py進程

# 你也可以分別運行他們,

# 依次到Api下啟動ProxyApi.py,Schedule下啟動ProxyRefreshSchedule.py和ProxyValidSchedule.py即可.

使用

啟動過幾分鐘后就能看到抓取到的代理IP,你可以直接到數據庫中查看,推薦一個SSDB可視化工具。

Api

api

method

Description

arg

/

GET

api介紹

None

/get

GET

隨機獲取一個代理

None

/get_all

GET

獲取所有代理

None

/get_status

GET

查看代理數量

None

/delete

GET

刪除代理

proxy=host:ip

爬蟲使用

如果要在爬蟲代碼中使用的話, 可以將此api封裝成函數直接使用,例如:

import requests

def get_proxy():

return requests.get("http://127.0.0.1:5010/get/").content

def delete_proxy(proxy):

requests.get("http://127.0.0.1:5010/delete/?proxy={}".format(proxy))

# your spider code

def getHtml():

# ....

retry_count = 5

proxy = get_proxy()

while retry_count > 0:

try:

html = requests.get('https://www.example.com', proxies={"http": "http://{}".format(proxy)})

# 使用代理訪問

return html

except Exception:

retry_count -= 1

# 出錯5次, 刪除代理池中代理

delete_proxy(proxy)

return None

擴展代理

項目默認包含幾個免費的代理獲取方法,但是免費的畢竟質量不好,所以如果直接運行可能拿到的代理質量不理想。所以,提供了代理獲取的擴展方法。

添加一個新的代理獲取方法如下:

1、首先在GetFreeProxy類中添加你的獲取代理的靜態方法,

該方法需要以生成器(yield)形式返回host:ip格式的代理,例如:

class GetFreeProxy(object):

# ....

# 你自己的方法

@staticmethod

def freeProxyCustom(): # 命名不和已有重復即可

# 通過某網站或者某接口或某數據庫獲取代理 任意你喜歡的姿勢都行

# 假設你拿到了一個代理列表

proxies = ["139.129.166.68:3128", "139.129.166.61:3128", ...]

for proxy in proxies:

yield proxy

# 確保每個proxy都是 host:ip正確的格式就行

2、添加好方法后,修改Config.ini文件中的[ProxyGetter]項:

在Config.ini的[ProxyGetter]下添加自定義的方法的名字:

[ProxyGetter]

;register the proxy getter function

freeProxyFirst = 0 # 如果要取消某個方法,將其刪除或賦為0即可

....

freeProxyCustom = 1 # 確保名字和你添加方法名字一致

ProxyRefreshSchedule會每隔一段時間抓取一次代理,下次抓取時會自動識別調用你定義的方法。

問題反饋

任何問題歡迎在Issues 中反饋,如果沒有賬號可以去 我的博客中留言。

你的反饋會讓此項目變得更加完美。

貢獻代碼

本項目僅作為基本的通用的代理池架構,不接收特有功能(當然,不限于特別好的idea)。

本項目依然不夠完善,如果發現bug或有新的功能添加,請在Issues中提交bug(或新功能)描述,在確認后提交你的代碼。

這里感謝以下contributor的無私奉獻:

總結

以上是生活随笔為你收集整理的python 爬虫工具 butter_GitHub - TheButterflyOdor/proxy_pool: Python爬虫代理IP池(proxy pool)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。