<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 信號 > 譯者:[OSGeo 中國](https://www.osgeo.cn/) Scrapy廣泛使用信號來通知某些事件何時發生。你可以在你的垃圾項目中捕捉到這些信號(使用 [extension](extensions.html#topics-extensions) 例如)執行其他任務或擴展scrapy以添加框外未提供的功能。 即使信號提供了幾個參數,捕獲它們的處理程序也不需要接受所有參數——信號調度機制只傳遞處理程序接收的參數。 您可以通過 [信號API](api.html#topics-api-signals) . 下面是一個簡單的示例,演示如何捕獲信號并執行某些操作::: ```py from scrapy import signals from scrapy import Spider class DmozSpider(Spider): name = "dmoz" allowed_domains = ["dmoz.org"] start_urls = [ "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/", "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/", ] @classmethod def from_crawler(cls, crawler, *args, **kwargs): spider = super(DmozSpider, cls).from_crawler(crawler, *args, **kwargs) crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed) return spider def spider_closed(self, spider): spider.logger.info('Spider closed: %s', spider.name) def parse(self, response): pass ``` ## 延遲信號處理程序 一些信號支持返回 [Twisted deferreds](https://twistedmatrix.com/documents/current/core/howto/defer.html) from their handlers, see the [內置信號參考](#topics-signals-ref) 下面是要知道哪些。 ## 內置信號參考 這是一個零碎的內置信號列表及其含義。 ### engine_started ```py scrapy.signals.engine_started() ``` 當廢引擎開始爬行時發送。 此信號支持從其處理程序返回延遲。 注解 此信號可能被觸發 _after_ 這個 [`spider_opened`](#std:signal-spider_opened) 信號,取決于 Spider 是如何啟動的。所以 **don't** 依靠這個信號 [`spider_opened`](#std:signal-spider_opened) . ### engine_stopped ```py scrapy.signals.engine_stopped() ``` 在 Scrapy 引擎停止時發送(例如,當爬行過程完成時)。 此信號支持從其處理程序返回延遲。 ### item_scraped ```py scrapy.signals.item_scraped(item, response, spider) ``` 當一個項目被刮掉時發送,當它通過所有 [項目管道](item-pipeline.html#topics-item-pipeline) 階段(不下降)。 此信號支持從其處理程序返回延遲。 | 參數: | * **item** (dict or [`Item`](items.html#scrapy.item.Item "scrapy.item.Item") object) -- 物品被刮掉了 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 刮掉物品的 Spider * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 從項目被刮掉的地方得到的響應 | | --- | --- | ### item_dropped ```py scrapy.signals.item_dropped(item, response, exception, spider) ``` 從中刪除項目后發送 [項目管道](item-pipeline.html#topics-item-pipeline) 當某個階段 [`DropItem`](exceptions.html#scrapy.exceptions.DropItem "scrapy.exceptions.DropItem") 例外。 此信號支持從其處理程序返回延遲。 | 參數: | * **item** (dict or [`Item`](items.html#scrapy.item.Item "scrapy.item.Item") object) -- 從中刪除的項 [項目管道](item-pipeline.html#topics-item-pipeline) * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 刮掉物品的 Spider * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 從中刪除項的響應 * **exception** ([`DropItem`](exceptions.html#scrapy.exceptions.DropItem "scrapy.exceptions.DropItem") exception) -- 例外情況(必須是 [`DropItem`](exceptions.html#scrapy.exceptions.DropItem "scrapy.exceptions.DropItem") 子類)導致該項被刪除 | | --- | --- | ### item_error ```py scrapy.signals.item_error(item, response, spider, failure) ``` 發送時 [項目管道](item-pipeline.html#topics-item-pipeline) 生成錯誤(即引發異常),除非 [`DropItem`](exceptions.html#scrapy.exceptions.DropItem "scrapy.exceptions.DropItem") 例外。 此信號支持從其處理程序返回延遲。 | 參數: | * **item** (dict or [`Item`](items.html#scrapy.item.Item "scrapy.item.Item") object) -- 從中刪除的項 [項目管道](item-pipeline.html#topics-item-pipeline) * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 引發異常時正在處理的響應 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 引發異常的 Spider * **failure** ([Failure](https://twistedmatrix.com/documents/current/api/twisted.python.failure.Failure.html) object) -- 以扭曲方式引發的異常 [Failure](https://twistedmatrix.com/documents/current/api/twisted.python.failure.Failure.html) 對象 | | --- | --- | ### spider_closed ```py scrapy.signals.spider_closed(spider, reason) ``` 在 Spider 關閉后發送。這可用于釋放在上保留的每個 Spider 資源 [`spider_opened`](#std:signal-spider_opened) . 此信號支持從其處理程序返回延遲。 | 參數: | * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 已關閉的 Spider * **reason** (_str_) -- 描述 Spider 關閉原因的字符串。如果它是因為 Spider 完成了抓取而關閉的,原因是 `'finished'` . 否則,如果通過調用 `close_spider` 引擎方法,則原因是 `reason` 該方法的參數(默認為 `'cancelled'` )如果發動機停機(例如,按ctrl-c停止發動機),原因將是 `'shutdown'` . | | --- | --- | ### spider_opened ```py scrapy.signals.spider_opened(spider) ``` 在 Spider 被打開爬行后發送。這通常用于為每個 Spider 保留資源,但可用于打開 Spider 時需要執行的任何任務。 此信號支持從其處理程序返回延遲。 | 參數: | **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 已經打開的 Spider | | --- | --- | ### spider_idle ```py scrapy.signals.spider_idle(spider) ``` 當 Spider 空閑時發送,這意味著 Spider 沒有更多: > * 等待下載的請求 > * 計劃的請求 > * 正在項管道中處理的項 如果此信號的所有處理程序完成后空閑狀態仍然存在,則引擎將開始關閉 Spider 。 Spider 完成閉合后, [`spider_closed`](#std:signal-spider_closed) 發送信號。 你可以舉起 [`DontCloseSpider`](exceptions.html#scrapy.exceptions.DontCloseSpider "scrapy.exceptions.DontCloseSpider") 防止 Spider 關閉的異常。 此信號不支持從其處理程序返回延遲。 | 參數: | **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 空轉的 Spider | | --- | --- | 注解 在您的 [`spider_idle`](#std:signal-spider_idle) 處理程序 **not** 確保它可以防止 Spider 被關閉,盡管有時可以。這是因為如果計劃程序拒絕了所有計劃的請求(例如,由于重復而被篩選),那么spider可能仍然處于空閑狀態。 ### spider_error ```py scrapy.signals.spider_error(failure, response, spider) ``` 在spider回調生成錯誤(即引發異常)時發送。 此信號不支持從其處理程序返回延遲。 | 參數: | * **failure** ([Failure](https://twistedmatrix.com/documents/current/api/twisted.python.failure.Failure.html) object) -- 以扭曲方式引發的異常 [Failure](https://twistedmatrix.com/documents/current/api/twisted.python.failure.Failure.html) 對象 * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 引發異常時正在處理的響應 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 引發異常的 Spider | | --- | --- | ### request_scheduled ```py scrapy.signals.request_scheduled(request, spider) ``` 在發動機排程A時發送 [`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") ,稍后下載。 該信號不支持從其處理程序返回延遲。 | 參數: | * **request** ([`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") object) -- 到達調度程序的請求 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 發出請求的 Spider | | --- | --- | ### request_dropped ```py scrapy.signals.request_dropped(request, spider) ``` 發送時 [`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") 由引擎計劃稍后下載的,被調度程序拒絕。 該信號不支持從其處理程序返回延遲。 | 參數: | * **request** ([`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") object) -- 到達調度程序的請求 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 發出請求的 Spider | | --- | --- | ### request_reached_downloader ```py scrapy.signals.request_reached_downloader(request, spider) ``` 發送時 [`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") 已到達下載程序。 該信號不支持從其處理程序返回延遲。 | 參數: | * **request** ([`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") object) -- 到達下載程序的請求 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 發出請求的 Spider | | --- | --- | ### response_received ```py scrapy.signals.response_received(response, request, spider) ``` 當發動機接收到新的 [`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") 從下載程序。 此信號不支持從其處理程序返回延遲。 | 參數: | * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 收到的響應 * **request** ([`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") object) -- 生成響應的請求 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 響應所針對的 Spider | | --- | --- | ### response_downloaded ```py scrapy.signals.response_downloaded(response, request, spider) ``` 由下載者在 `HTTPResponse` 是下載的。 此信號不支持從其處理程序返回延遲。 | 參數: | * **response** ([`Response`](request-response.html#scrapy.http.Response "scrapy.http.Response") object) -- 已下載響應 * **request** ([`Request`](request-response.html#scrapy.http.Request "scrapy.http.Request") object) -- 生成響應的請求 * **spider** ([`Spider`](spiders.html#scrapy.spiders.Spider "scrapy.spiders.Spider") object) -- 響應所針對的 Spider | | --- | --- |
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看