scrapy 2.3 蜘蛛爬取參數(shù)

2021-06-02 11:13 更新

蜘蛛可以接受改變其行為的論據(jù)。spider參數(shù)的一些常見用途是定義起始URL或?qū)⑴佬邢拗圃谡军c的某些部分,但它們可以用于配置spider的任何功能。

蜘蛛?yún)?shù)通過 ?crawl? 命令使用 -a 選項。例如::

scrapy crawl myspider -a category=electronics

蜘蛛可以在它們的 __init__ 方法::

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'

    def __init__(self, category=None, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs)
        self.start_urls = [f'http://www.example.com/categories/{category}']
        # ...

默認值 __init__ 方法將獲取任何spider參數(shù),并將其作為屬性復制到spider。上面的例子也可以寫如下:

import scrapy

class MySpider(scrapy.Spider):
    name = 'myspider'

    def start_requests(self):
        yield scrapy.Request(f'http://www.example.com/categories/{self.category}')

請記住,spider參數(shù)只是字符串。蜘蛛本身不會進行任何解析。如果你要設置 start_urls 屬性來自命令行,您必須使用類似的 ?ast.literal_eval()? 或 ?json.loads()? 然后將其設置為屬性。否則,您將在 ?start_urls? 字符串(一個非常常見的Python陷阱),導致每個字符被視為一個單獨的URL。

有效的用例是設置 ?HttpAuthMiddleware? 或用戶代理 ?UserAgentMiddleware? ::

scrapy crawl myspider -a http_user=myuser -a http_pass=mypassword -a user_agent=mybot

蜘蛛?yún)?shù)也可以通過scrapyD傳遞 ?schedule.json? 應用程序編程接口。見 Scrapyd documentation .

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號