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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

爬虫(十二):scrapy中spiders的用法

發布時間:2023/12/1 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫(十二):scrapy中spiders的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spider類定義了如何爬去某個網站,包括爬取的動作以及如何從網頁內容中提取結構化的數據,總的來說spider就是定義爬取的動作以及分析某個網頁

工作流程分析

  • 以初始的URL初始化Request,并設置回調函數,當該request下載完畢并返回時,將生成response,并作為參數傳給回調函數. spider中初始的requesst是通過start_requests()來獲取的。start_requests()獲取 start_urls中的URL,并以parse以回調函數生成Request?
  • 在回調函數內分析返回的網頁內容,可以返回Item對象,或者Dict,或者Request,以及是一個包含三者的可迭代的容器,返回的Request對象之后會經過Scrapy處理,下載相應的內容,并調用設置的callback函數
  • 在回調函數內,可以通過lxml,bs4,xpath,css等方法獲取我們想要的內容生成item
  • 最后將item傳遞給Pipeline處理
  • 我們以通過簡單的分析源碼來理解
    我通常在寫spiders下寫爬蟲的時候,我們并沒有寫start_requests來處理start_urls中的url,這是因為我們在繼承的scrapy.Spider中已經寫過了,我們可以點開scrapy.Spider查看分析

    ?

    通過上述代碼我們可以看到在父類里這里實現了start_requests方法,通過make_requests_from_url做了Request請求
    如下圖所示的一個例子,parse回調函數中的response就是父類列start_requests方法調用make_requests_from_url返回的結果,并且在parse回調函數中我們可以繼續返回Request,如下屬代碼中yield Request()并設置回調函數。

    ?

    spider內的一些常用屬性

    我們所有自己寫的爬蟲都是繼承與spider.Spider這個類

    name

    定義爬蟲名字,我們通過命令啟動的時候用的就是這個名字,這個名字必須是唯一的

    allowed_domains

    包含了spider允許爬取的域名列表。當offsiteMiddleware啟用時,域名不在列表中URL不會被訪問
    所以在爬蟲文件中,每次生成Request請求時都會進行和這里的域名進行判斷

    start_urls

    起始的url列表
    這里會通過spider.Spider方法中會調用start_request循環請求這個列表中每個地址。

    custom_settings

    自定義配置,可以覆蓋settings的配置,主要用于當我們對爬蟲有特定需求設置的時候

    設置的是以字典的方式設置:custom_settings = {}

    from_crawler

    這是一個類方法,我們定義這樣一個類方法,可以通過crawler.settings.get()這種方式獲取settings配置文件中的信息,同時這個也可以在pipeline中使用

    start_requests()
    這個方法必須返回一個可迭代對象,該對象包含了spider用于爬取的第一個Request請求
    這個方法是在被繼承的父類中spider.Spider中寫的,默認是通過get請求,如果我們需要修改最開始的這個請求,可以重寫這個方法,如我們想通過post請求

    make_requests_from_url(url)
    這個也是在父類中start_requests調用的,當然這個方法我們也可以重寫

    parse(response)
    這個其實默認的回調函數
    負責處理response并返回處理的數據以及跟進的url
    該方法以及其他的Request回調函數必須返回一個包含Request或Item的可迭代對象

    ?

    轉載于:https://www.cnblogs.com/felixwang2/p/8796541.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的爬虫(十二):scrapy中spiders的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

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