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

歡迎訪問 生活随笔!

生活随笔

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

python

python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架

發布時間:2024/9/3 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:https://www.jqhtml.com/11084.html

既然已經有像 Scrapy 這樣優秀的爬蟲框架,為何還要造輪子呢?嗯,其實最主要的還是想要將學習到 Python 知識綜合起來,提高一下自己。

Features

1.簡單、易用;

2.易于定制的 Spider;

3.多線程實現并發下載。

待改進

1.更多的測試代碼;

2.添加更多的網站爬蟲示例;

3.完善爬蟲調度,支持 Request 優先級調度。

xcrawler 介紹

項目結構

Crawler engine (生產者+消費者模型)

1.引擎啟動時會啟動一個后臺線程池,后臺線程池負責下載由調度器提供給它的所有 URL(Request),并將響應(Response)結果存放到隊列中;

2.引擎的前臺解析線程會不斷消費處理隊列中的響應(Response),并調用相應 Spider 的解析函數處理這些相應;

3.引擎負責處頁面理解析回來的對象,所有的 Request 對象都會被放到隊列中(遞歸抓取時)等待處理,所有的字典對象(item)送給 Spider 的 process_item 方法處理。

配置介紹

配置項目

1.download_delay: 每批次之間的下載延遲(單位為秒),默認為 0;

2.download_timeout:下載等待延遲,默認為 6 秒;

3.retry_on_timeout:即當下載超時后,對應的請求是否應該重試;

4.concurrent_requests:并發下載數;

5.queue_size:請求隊列大小,當隊列已滿時,會阻塞后續的請求。

示例配置:

settings ={

'download_delay': 0,

'download_timeout': 6,

'retry_on_timeout': True,

'concurrent_requests': 32,

'queue_size': 512

}

Spider 基類關鍵方法介紹

1.spider_started:該方法會在引擎啟動時被觸發調用,你可以通過繼承該方法進行一些初始化工作,比如配置 pipeline 輸出文件或者數據庫連接等等;

2.spider_idle:該方法會在引擎處理空閑狀態(即沒有任何 requests 在隊列)時被觸發調用,你可以通過繼承該方法給引擎添加新的請求等(使用 self.crawler.crawl(new_request, spider=self) 即可);

3.spider_stopped:該方法會在引擎關閉時觸發調用,你可以通過繼承該方法并在 Spider 結束工作前做一些清理工作,如關閉文件管道、關閉數據庫連接等;

4.start_requests:該方法會為引擎提該 Spider 的對應種子請求;

5.make_requests_from_url:該方法會為你的 URL 創建一個 Request 對象;

6.parse:該方法為請求的默認解析函數回調,當然你可以可以在創建 Request 時指定其它的回調函數;

7.process_request:每當引擎處理一個 Spider 對應的請求時,該方法會被觸發調用,你可以通過繼承該方法對 request 做些設置,比如更換隨機的 User-Agent,替換 Cookies 或者代理等;當然,你可以將 request 設置為 None 從而忽略該請求;

8.proccess_response:每當引擎處理一個 Spider 對應的響應時,該方法會被觸發調用;

9.process_item:每當引擎處理一個 Spider 對應的 item 時,該方法會被觸發調用,你可以通過繼承該方法將抓取并解析到的 item 存儲到數據庫或者本地文件中。

注意

1.你可以在一個 Crawler 進程中裝入不同的 Spider class,但需要保證不同的 Spider 的名稱也要不同,否則會被引擎拒絕;

2.需要根據情況調整下載延遲和并發數大小;下載延遲盡量不要太大,否則每批請求可能會等待較長時間才會處理完成,從而影響爬蟲性能;

3.Windows 下的測試還沒做,我用的是 Ubuntu,所以如果您有什么問題,歡迎反饋哈!

安裝

1.請移步項目主頁 xcrawler (https://github.com/chrisleegit/xcrawler) 下載源碼;

2.請保證你的安裝環境為 Python 3.4+;

3.請使用 pip3 setup.py install 安裝即可。

示例

總結

以上是生活随笔為你收集整理的python开发框架 代码生成_500 行 Python 代码构建一个轻量级爬虫框架的全部內容,希望文章能夠幫你解決所遇到的問題。

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