首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Scrapy:无法在Jupyter Notebook脚本、reporting ReactorNotRestartable中重新运行

Scrapy:无法在Jupyter Notebook脚本、reporting ReactorNotRestartable中重新运行
EN

Stack Overflow用户
提问于 2017-02-15 14:26:28
回答 1查看 1.6K关注 0票数 5

我的垃圾代码是这样的:

代码语言:javascript
运行
复制
import scrapy
from scrapy.crawler import CrawlerProcess

class MovieSpider(scrapy.Spider):
    name = "movies"
    start_urls = [
        'https://movie.douban.com/subject/25934014/',
        'https://movie.douban.com/subject/25852314/',
    ]

    def parse(self, response):
        title = response.css('div#wrapper div#content h1 span::text').extract_first()
        year = response.css('div#wrapper div#content h1 span.year::text').extract_first()
        yield {
            'url': response.url,
            'title': title,
            'year': year,
        }

我是这样运行它的

代码语言:javascript
运行
复制
process = CrawlerProcess({
    'USER_AGENT': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
    'FEED_FORMAT': 'json',
    'FEED_URI': 'movie.json',
    'FEED_EXPORT_ENCODING':'utf-8'
})

process.crawl(MovieSpider)
process.start() #

这是docs中推荐的方式。

问题是,在我运行上面的脚本之后,我不能再次运行它。Jupyter notebook返回错误ReactorNotRestartable

如果我在jupyter中重新启动内核,那么第一次运行就可以了。

我认为这个问题在Scrapy crawl from script always blocks script execution after scraping中已经说明了

我也许可以通过使用他们的代码来解决这个问题。然而,他们的代码对于这么小的东西来说是相当复杂的,与文档中推荐的CrawlerProcess方式相去甚远。

我想知道是否有更好的方法来解决这个问题?

我尝试在脚本末尾添加process.stop()。这没什么用。

EN

回答 1

Stack Overflow用户

发布于 2019-01-31 21:50:04

在使用笔记本电脑时,我相信您必须遵循Running Scrapy as a Script中描述的方法之一。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42242100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档