Python爬蟲框架Scrapy學習記錄-Spider

Scrapy簡介

Scrapy是Python實現的爬蟲框架,使用只需要關注核心業務即可.安裝教程請參考官方文檔

安裝完成之後可通過scrapy 命令創建項目,爬蟲,及運行爬蟲,詳情使用 scrapy -h 命令查看

創建項目及爬蟲後重寫爬蟲中parse方法即可實現簡單內容爬取,支持xpath及css模式提取內容

項目結構說明

圖片中meijm_practice爲創建的項目名稱.

  • spiders文件夾:存放具體爬蟲類繼承自scrapy.Spider及其子類,作用是爬取網頁並生產具體實體
  • items.py:存放爬蟲中使用到的實體
  • middlewares.py: 中間件,例如ip代理等
  • pipelines.py:直譯是管道,對爬蟲產生的實體進行後續處理,例如存儲至數據庫,下載等
  • settings.py:項目全局配置,設置啓用的中間件,管道,請求頭等.

scrapy.Spider類簡介

核心屬性及方法說明

名稱 類型 說明
name 字符串屬性 爬蟲名稱,執行爬蟲時使用
custom_settings 字典屬性 自定義設置,指定中間件管道,請求頭等
allowed_domains 數組屬性 允許的域名,創建爬蟲時指定,非必須
start_urls 數組屬性 爬蟲開始的地址
start_requests(slf) 重載方法 爬蟲開始地址的方法模式,返回爲<br /> yield scrapy.Request(url=地址, callback=self.parse)
parse(self, response) 重載方法 解析網頁,並生產具體實體或啓動下次爬取

例子

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
        'http://quotes.toscrape.com/page/2/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').get(),
                'author': quote.css('small.author::text').get(),
                'tags': quote.css('div.tags a.tag::text').getall(),
            }

命令行執行爬蟲

scrapy crawl quotes -O quotes.json

直接執行會將爬取到的內容輸出至qutoes.json文件中不加"-O quotes.json"則僅輸出至控制檯

其它

parse中返回下次爬取網址的幾種方法

  • response.follow_all(response.xpath("a標籤"), self.解析函數)
  • yield scrapy.Request(url地址絕對路徑, callback=self.解析函數)
  • yield response.follow(url相對路徑/選擇器返回的單個a標籤, callback=self.解析函數)
  • yield from response.follow_all(選擇器返回的所有a標籤, callback=self.解析函數)

self爲當前類,解析函數參數與parse相同

scrapy.Spider還有幾個官方子類,常用的是CrawlSpider:支持正則過濾url

參考資料

官方網站 https://scrapy.org/

中文文檔 https://www.osgeo.cn/scrapy/intro/tutorial.html

菜鳥教程 https://www.runoob.com/w3cnote/scrapy-detail.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章