找回密码
 立即注册

蜘蛛

2022-2-21 06:01| 发布者: 笨鸟自学网| 查看: 8738| 评论: 0

摘要: spider是定义一个特定站点(或一组站点)如何被抓取的类,包括如何执行抓取(即跟踪链接)以及如何从页面中提取结构化数据(即抓取项)。换言之,spider是为特定站点(或者在某些情况下,一组站点)定义爬行和解析页 ...


蜘蛛论点

蜘蛛可以接受改变其行为的论据。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, 2025-8-31 12:07 , Processed in 0.023030 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2017 Discuz Team. Template By 【未来科技】【 www.wekei.cn 】

返回顶部