日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

開源精選 – 一個高效的Python爬蟲框架Scrapy(開源python爬蟲軟件)

開源精選 | 一個高效的Python爬蟲框架Scrapy(開源python爬蟲軟件)

《開源精選》是我們分享Github、Gitee等開源社區(qū)中優(yōu)質項目的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的 scrapy是一個快速的高級網頁抓取和網頁抓取框架,用于抓取網站并從其頁面中提取結構化數(shù)據(jù)。它可用于廣泛的用途,從數(shù)據(jù)挖掘到監(jiān)控和自動化測試。

開源精選 - 一個高效的Python爬蟲框架Scrapy(開源python爬蟲軟件)

框架示例

Scrapy 是一個用于抓取網站和提取結構化數(shù)據(jù)的應用程序框架,可用于各種有用的應用程序,如數(shù)據(jù)挖掘、信息處理或歷史存檔。

下面是一個爬蟲的代碼,它從網站http://quotes.toscrape.com 中抓取名言 ,遵循分頁:

import scrapyclass QuotesSpider(scrapy.Spider): name = 'quotes' start_urls = [ 'http://quotes.toscrape.com/tag/humor/', ] def parse(self, response): for quote in response.css('div.quote'): yield { 'author': quote.xpath('span/small/text()').get(), 'text': quote.css('span.text::text').get(), } next_page = response.css('li.next a::attr("href")').get() if next_page is not None: yield response.follow(next_page, self.parse)

將其放入一個文本文件中,將其命名為類似名稱 quotes_spider.py 并使用以下 runspider 命令運行:

scrapy runspider quotes_spider.py -o quotes.jl

完成后,您將在 quotes.jl 文件中獲得 JSON 行格式的引號列表,其中包含文本和作者,如下所示:

{"author": "Jane Austen", "text": "u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.u201d"}{"author": "Steve Martin", "text": "u201cA day without sunshine is like, you know, night.u201d"}{"author": "Garrison Keillor", "text": "u201cAnyone who thinks sitting in church can make you a Christian must also think that sitting in a garage can make you a car.u201d"}...

蜘蛛中間件

Spider 中間件是 Scrapy 蜘蛛處理機制的鉤子框架,可以在其中插入自定義功能來處理發(fā)送給Spider進行處理的響應以及處理從蜘蛛生成的請求和項目。

架構概覽

數(shù)據(jù)流:

開源精選 - 一個高效的Python爬蟲框架Scrapy(開源python爬蟲軟件)

執(zhí)行流程:

    1. 該引擎獲取從最初請求爬行蜘蛛。
    2. 該引擎安排在請求調度程序和要求下一個請求爬行。
    3. 該計劃返回下一請求的引擎。
    4. 該引擎發(fā)送請求到 下載器,通過下載器中間件。
    5. 頁面完成下載后,下載器生成一個響應(帶有該頁面)并將其發(fā)送到引擎,通過下載器中間件
    6. 該引擎接收來自響應下載器并將其發(fā)送到所述 蜘蛛進行處理,通過蜘蛛中間件。
    7. 該蜘蛛處理響應并返回旗下的項目和新的要求(跟隨)的引擎,通過蜘蛛中間件。
    8. 該引擎發(fā)送處理的項目,以項目管道,然后把處理的請求的調度,并要求今后可能請求爬行。
    9. 該過程重復(從第 1 步開始),直到不再有來自Scheduler 的請求 。

安裝指南

Scrapy 需要 Python 3.6 ,CPython 實現(xiàn)(默認)或 PyPy 7.2.0 實現(xiàn)。

安裝 Scrapy

如果您使用的是AnacondaMiniconda,則可以從condaforge頻道安裝該軟件包,該頻道具有適用于 Linux、Windows 和 macOS 的最新軟件包。

要使用 安裝 Scrapy conda,請運行:

conda install -c conda-forge scrapy

或者,如果您已經熟悉 Python 包的安裝,則可以使用以下命令從 PyPI 安裝 Scrapy 及其依賴項:

pip install Scrapy

注意:Scrapy 是用純 Python 編寫的,并且依賴于一些關鍵的 Python 包

  • lxml,一個高效的 XML 和 HTML 解析器
  • parsel,一個寫在 lxml 之上的 HTML/XML 數(shù)據(jù)提取庫,
  • w3lib,用于處理 URL 和網頁編碼的多用途助手
  • 扭曲,一個異步網絡框架
  • 密碼學和pyOpenSSL,處理各種網絡級安全需求

核心API

爬蟲API

Scrapy API 的主要入口點是Crawler 對象,通過from_crawler類方法傳遞給擴展。該對象提供對所有 Scrapy 核心組件的訪問,它是擴展訪問它們并將其功能掛鉤到 Scrapy 的唯一方法。

設置 API

設置 Scrapy 中使用的默認設置優(yōu)先級的鍵名和優(yōu)先級的字典。

每個項目都定義了一個設置入口點,為其提供了一個用于標識的代碼名稱和一個整數(shù)優(yōu)先級。在Settings類中設置和檢索值時,較大的優(yōu)先級比較小的優(yōu)222222先級更高 。

蜘蛛加載器API

這個類負責檢索和處理跨項目定義的蜘蛛類。

可以通過在SPIDER_LOADER_CLASS項目設置中指定它們的路徑來使用自定義蜘蛛加載器 。他們必須完全實現(xiàn)scrapy.interfaces.ISpiderLoader接口以保證無錯執(zhí)行。

信號 API

將接收器的功能連接到信號。

信號可以是任何對象,盡管 Scrapy 帶有一些預定義的信號,這些信號記錄在信號 部分。

統(tǒng)計收集器 API

scrapy.statscollectors模塊下有幾個可用的統(tǒng)計收集器 ,它們都實現(xiàn)了StatsCollector 類定義的統(tǒng)計收集器 API (它們都繼承自)。

更多參考:https://github.com/scrapy/scrapy

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部
宜阳县| 华坪县| 织金县| 云和县| 邵东县| 阿巴嘎旗| 托克托县| 衡南县| 靖州| 许昌县| 三原县| 桃江县| 仁怀市| 南江县| 金门县| 密云县| 霍城县| 内黄县| 霍山县| 义马市| 舞阳县| 左权县| 永济市| 那曲县| 双流县| 安乡县| 富锦市| 大石桥市| 库伦旗| 治县。| 东城区| 胶州市| 长白| 迁西县| 周宁县| 勃利县| 介休市| 临澧县| 淮滨县| 望城县| 丰原市|