笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

蜘蛛

发布者: 笨鸟自学网



蜘蛛论点

蜘蛛可以接受改变其行为的论据。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}')

如果你是 running Scrapy from a script ,则可以在调用时指定爬行器参数。 CrawlerProcess.crawl 或 CrawlerRunner.crawl ::

process = CrawlerProcess()
process.crawl(MySpider, category="electronics")

请记住,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 .


上一篇:命令行工具下一篇:选择器

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-9-8 09:36 , Processed in 0.020244 second(s), 17 queries .

© 2001-2020

返回顶部