抓取数据时出错:'EPollReactor'对象没有属性'_handleSignals'

Yế*_*han 11 web-crawler scrapy

我正在尝试从 URL 列表中抓取数据。我已经完成了下面的代码,昨天成功了,没有任何错误。

但是今天,当我回来再次运行代码时,出现了错误: 'EPollReactor' object has no attribute '_handleSignals' 详细错误

下面是我的代码:

class MySpider(scrapy.Spider):
    name = 'myspider'
    def start_requests(self):
        urls = df['Link']
        for index, url in enumerate(urls):
          yield scrapy.Request(url=url, meta={'Index':index,'Item': ''})

    def parse(self, response):
        Item = response.meta['Item']
        Index = response.meta['Index']
        content = ''
        for para in response.css('p::text').extract():
            Item = Item + para
        df.loc[Index,"Content"] = Item

process = CrawlerProcess()
process.crawl(MySpider)
process.start()
Run Code Online (Sandbox Code Playgroud)

我进行了搜索,但我并不完全理解这一点,所以我无法修复错误。你能帮我解决它吗?

谢谢

Cra*_*aig 19

你重新安装了scrapy吗?我今天遇到了同样的问题 - 我之前运行的代码给出了您所描述的错误。看起来该错误与 scrapy 的依赖项之一 Twisted 包有关。大约 4 小时前发布了 Twisted 软件包的新版本(版本 23.8.0),该软件包似乎与 scrapy 存在一些兼容性问题。如果您 p​​ip install scrapy 并允许将 Twisted 作为依赖项安装,它将安装新版本并抛出此错误。我通过这样做解决了这个问题

pip install Twisted==22.10.0
Run Code Online (Sandbox Code Playgroud)

安装以前版本的 Twisted 它解决了我的问题。