日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

python通过ip池爬_如何自建PYTHON爬虫代理IP池

發(fā)布時(shí)間:2023/12/31 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python通过ip池爬_如何自建PYTHON爬虫代理IP池 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3. 具體介紹

獲取兔子IP及檢測IP并入庫

涉及腳本:

work_spider.py

get_proxies_base_spider.py

_request.py

proxy_basic_config.py

custom_get_ip下的腳本

work_spider.py

入口腳本

從 get_proxies_base_spider。py 中繼承SpiderMain。 在WorkSpider類中重寫父類的run方法,在其中可以 傳入自定義的請(qǐng)求函數(shù), 若沒有, 則使用默認(rèn)的上述框架中的請(qǐng)求函數(shù)。

get_proxies_base_spider.py

主程序

提供了默認(rèn)的ip的獲取, 檢測, 入庫函數(shù)。其中,解析函數(shù)可以自定義。

包括的方法:

run

啟動(dòng)函數(shù), 啟動(dòng)請(qǐng)求框架的線程池, 調(diào)用craw函數(shù);

craw

開始爬取函數(shù), 對(duì)配置中的配置項(xiàng)目進(jìn)行讀取,發(fā)起初始請(qǐng)求;

get_and_check

獲取返回的源代碼, 并調(diào)用解析函數(shù);

parse_to_get_ip

默認(rèn)的解析函數(shù), 用戶可通過配置自定義。解析出原始IP, 然后調(diào)用檢測函數(shù);

start_check

開始檢測函數(shù), 其中檢測的函數(shù)為_request。py中的valid函數(shù); save_ip

檢測成功的入庫函數(shù), 將檢測成功的數(shù)據(jù)放入mongodb數(shù)據(jù)庫中;

_request.py

檢測腳本程序

包括的方法:

valid

檢測函數(shù), 因?yàn)橐险?qǐng)求框架的要求,所以自定義的這個(gè)函數(shù)需要返回兩個(gè)值, 在這里返回了 響應(yīng)時(shí)間與檢測的IP。

proxy_basic_config.py

代理網(wǎng)頁設(shè)置腳本

包括的字段:

target_urls

待檢測的目標(biāo)網(wǎng)站, list類型;

collection_name

mongodb數(shù)據(jù)庫的集合名, 字符串類型;

**over_time **

數(shù)據(jù)庫中IP存活時(shí)間閥值, 超過及對(duì)其重新檢測, int類型, 默認(rèn)1800秒;

url_parse_dict

代理IP網(wǎng)址配置字典, 字典類型

下面將對(duì)這一配置字典作著重介紹:

(1) 格式

{ip_website_name: value}

ip_website

代理IP網(wǎng)站的名字, 如tuziip

value

其他設(shè)置值, 字典類型

(2) value

因?yàn)関alue是一個(gè)內(nèi)嵌的字典,所以其也有自己的鍵和值。

[1] status

代理狀態(tài), 若不想爬取此網(wǎng)站,可以將status設(shè)置為非active的任意值, 必須;

[2] request_method

請(qǐng)求方法, 當(dāng)為post的時(shí)候, 必須定義提交的submit_data, 否則會(huì)報(bào)錯(cuò)。默認(rèn)為get, 非必須。

[3] submit_data

提交的數(shù)據(jù),因項(xiàng)目的特殊性,如需要提交的數(shù)據(jù)里面帶著網(wǎng)頁頁碼字段,所以為了獲得 多頁的數(shù)據(jù), 這里就需要定義多個(gè)post_data數(shù)據(jù),然后分別進(jìn)行請(qǐng)求。所以在這里將submit_data 定義為列表, 里面的數(shù)據(jù)為字典格式。

[4] url

代理IP網(wǎng)址, 列表類型, 把需要爬取的頁面都放在里面,必須。

[5] parse_type

解析類型, 默認(rèn)提供: xpath, re。 如果你需要?jiǎng)e的解析方式, 那么請(qǐng)定義自己的parse_func。默認(rèn)的解析函數(shù)即上文中的[parse_to_get_ip] 只提供xpath與re兩種解析獲取IP的方式。當(dāng)使用默認(rèn)解析器的時(shí)候, 必須定義。

[6] ip_port_together

ip和port是否在一個(gè)字段中, 若是則設(shè)置為True, 不是則設(shè)置為False, 當(dāng)使用re進(jìn)行解析和使用了自定義的解析函數(shù)時(shí),非必須。

若為地址與端口在一起,且通過xpath解析時(shí)則建議 [parse_method]中 的key為ip_address_and_port

若為地址與端口不在一起,且通過xpath解析時(shí)則建議 [parse_method] key為ip_address, ip_port

[7] parse_method

解析的具體路徑, 上一條有了部分的解釋, 當(dāng)使用默認(rèn)解析器時(shí),必須定義。

當(dāng)通過re進(jìn)行解析時(shí), 則ip_port_together可以為任意的值,parse_method中只有一個(gè)鍵: _pattern

[8] parse_func

解析函數(shù), 默認(rèn)值為system, 當(dāng)需要使用自定義的解析函數(shù)的時(shí)候, 需要顯式的定義該字段為自定義的解析函數(shù), 自定義的解析函數(shù)必須要有四個(gè)參數(shù), 分別為value, html_content, parse_type, website_name, 后面有詳細(xì)解釋

[9] header

因網(wǎng)址較多, 所以在這里可以自定義瀏覽器頭, 非必須。

*custom_get_ip下的文件

自定義解析函數(shù)

在這里以get_ip_from_peauland.py為例

通常, 如果你因?yàn)榇鞩P網(wǎng)站的特殊性而需要自定義一個(gè)解析函數(shù), 那么你可以在custom_get_ip文件夾下定義腳本

定義的腳本中必須定義解析函數(shù), 并在配置腳本proxy_basic_config。py中該網(wǎng)站對(duì)應(yīng)的設(shè)置中將parse_func設(shè)置為你定義的解析函數(shù)

在這里最好為需要自定義解析的網(wǎng)站寫一個(gè)獨(dú)立的腳本, 這樣利于維護(hù), 將需要自定義的值都放在其中, 然后在設(shè)置 腳本中進(jìn)行導(dǎo)入和定義。

具體的解釋可以參考上面腳本中的注釋。

總結(jié)

以上是生活随笔為你收集整理的python通过ip池爬_如何自建PYTHON爬虫代理IP池的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。