scrapy 2.3 蜘蛛爬取参数

2021-06-02 11:13 更新

蜘蛛可以接受改变其行为的论据。spider参数的一些常见用途是定义起始URL或将爬行限制在站点的某些部分,但它们可以用于配置spider的任何功能。

蜘蛛参数通过 ​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参数,并将其作为属性复制到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参数只是字符串。蜘蛛本身不会进行任何解析。如果你要设置 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

蜘蛛参数也可以通过scrapyD传递 ​schedule.json​ 应用程序编程接口。见 Scrapyd documentation .

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号