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

 找回密码
 立即注册

设置

发布者: 笨鸟自学网



TELNETCONSOLE_ENABLED

违约: True

一个布尔值,指定 telnet console 将被启用(前提是它的扩展也被启用)。

TEMPLATES_DIR

违约: templates Scrapy 模块内部目录

创建新项目时要在其中查找模板的目录 startproject 命令和新蜘蛛 genspider 命令。

项目名称不得与中自定义文件或目录的名称冲突。 project 子目录。

TWISTED_REACTOR

2.0 新版功能.

违约: None

给定的导入路径 reactor .

如果还没有安装其他反应器,比如当 scrapy 调用CLI程序或在使用 CrawlerProcess 班级。

如果您正在使用 CrawlerRunner 类,还需要手动安装正确的reactor。你可以用 install_reactor() 

scrapy.utils.reactor.install_reactor(reactor_pathevent_loop_path=None)[源代码]

安装 reactor 具有指定的导入路径。如果启用了asyncio reactor,还将使用指定的导入路径安装asyncio事件循环

如果已经安装了反应堆, install_reactor() 没有效果。

CrawlerRunner.__init__ 加薪 Exception 如果安装的反应器与 TWISTED_REACTOR 设置;因此,拥有顶级 reactor 项目文件中的导入和导入的第三方库将使Scrapy提高 Exception 当它检查安装了哪个反应堆时。

为了使用Scrapy安装的反应器:

import scrapy
from twisted.internet import reactor


class QuotesSpider(scrapy.Spider):
    name = 'quotes'

    def __init__(self, *args, **kwargs):
        self.timeout = int(kwargs.pop('timeout', '60'))
        super(QuotesSpider, self).__init__(*args, **kwargs)

    def start_requests(self):
        reactor.callLater(self.timeout, self.stop)

        urls = ['http://quotes.toscrape.com/page/1']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {'text': quote.css('span.text::text').get()}

    def stop(self):
        self.crawler.engine.close_spider(self, 'timeout')

使 Exception ,变成:

import scrapy


class QuotesSpider(scrapy.Spider):
    name = 'quotes'

    def __init__(self, *args, **kwargs):
        self.timeout = int(kwargs.pop('timeout', '60'))
        super(QuotesSpider, self).__init__(*args, **kwargs)

    def start_requests(self):
        from twisted.internet import reactor
        reactor.callLater(self.timeout, self.stop)

        urls = ['http://quotes.toscrape.com/page/1']
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {'text': quote.css('span.text::text').get()}

    def stop(self):
        self.crawler.engine.close_spider(self, 'timeout')

的默认值 TWISTED_REACTOR 设置是 None ,这意味着Scrapy不会尝试安装任何特定的reactor,并且将使用Twisted为当前平台定义的默认reactor。这是为了保持向后兼容性,并避免使用非默认反应器可能导致的问题。

有关其他信息,请参阅 Choosing a Reactor and GUI Toolkit Integration .


上一篇:链接提取器下一篇:例外情况

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

GMT+8, 2024-12-28 01:43 , Processed in 0.601305 second(s), 17 queries .

© 2001-2020

返回顶部