我正在尝试从 URL 列表中抓取数据。我已经完成了下面的代码,昨天成功了,没有任何错误。
但是今天,当我回来再次运行代码时,出现了错误:“EPollReactor”对象没有属性“_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()
我进行了搜索,但我并不完全理解这一点,所以我无法修复错误。你能帮我解决一下吗?
谢谢
你重新安装了scrapy吗?我今天遇到了同样的问题 - 我之前运行的代码给出了您所描述的错误。看起来该错误与 scrapy 的依赖项之一 Twisted 包有关。大约 4 小时前发布了 Twisted 软件包的新版本(版本 23.8.0),该软件包似乎与 scrapy 存在一些兼容性问题。如果您 pip install scrapy 并允许将 Twisted 作为依赖项安装,它将安装新版本并抛出此错误。我通过这样做解决了它
pip 安装 Twisted==22.10.0
安装 Twisted 的早期版本,它解决了我的问题。