scrapy 2.3 創(chuàng)建蜘蛛

2021-05-31 16:59 更新

蜘蛛是你定義的類,Scrapy用來從一個網(wǎng)站(或一組網(wǎng)站)獲取信息。它們必須是子類 ?Spider? 定義要發(fā)出的初始請求,可以選擇如何跟蹤頁面中的鏈接,以及如何解析下載的頁面內(nèi)容以提取數(shù)據(jù)。

這是我們第一只蜘蛛的代碼。將其保存在名為的文件中 ?quotes_spider.py? 下 ?tutorial/spiders? 項目中的目錄:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = f'quotes-{page}.html'
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log(f'Saved file {filename}')

如你所見,我們的蜘蛛子類 ?scrapy.Spider? 并定義了一些屬性和方法:

  • ?name? :標(biāo)識蜘蛛。它在一個項目中必須是唯一的,也就是說,不能為不同的蜘蛛設(shè)置相同的名稱。
  • ?start_requests()? :必須返回一個ITable of requests(您可以返回一個請求列表或編寫一個生成器函數(shù)),蜘蛛將從中開始爬行。隨后的請求將從這些初始請求中依次生成。
  • ?parse()? :將調(diào)用的方法,用于處理為每個請求下載的響應(yīng)。響應(yīng)參數(shù)是的實例 ?TextResponse? 它保存頁面內(nèi)容,并有進一步有用的方法來處理它。這個 ?parse()? 方法通常解析響應(yīng),將抓取的數(shù)據(jù)提取為dict,并查找新的URL以跟蹤和創(chuàng)建新的請求。( ?Request?0 從他們那里。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號