codecamp

scrapy 2.3 蜘蛛爬取参数

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

scrapy 2.3 scrapy.Spider
scrapy 2.3 类蜘蛛CrawlSpider
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

scrapy 2.3 链接提取器

scrapy 2.3 统计数据集合

scrapy 2.3 发送电子邮件

scrapy 2.3 蜘蛛合约

scrapy 2.3 如何部署蜘蛛

scrapy 2.3 AutoThrottle扩展

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }