如何修复“ IndexError:列表索引超出范围”?

时间:2019-08-14 12:16:21

标签: python-3.x scrapy

我正在用python 3 scrapy刮目录。 通过管道将抓取的数据添加到Mysql数据库中。py

我经常收到此错误消息“ IndexError:列表索引超出范围”。

对于此问题,它是在我抓取链接的网址时发生的。有时目录发布该项目的网站,有时不发布。

我没有找到关于堆栈溢出的任何解决方案。 我尝试将其转换为字符串,但无法正常工作。

这是产生此错误的代码行:

items['startup_website'] = response.xpath("//div[@class='listing-detail- section-content-wrapper']//a/@href")[0].get() or ''

有人知道如何解决此错误吗?

2 个答案:

答案 0 :(得分:3)

不必要的索引;您应该完全跳过它。

.xpath()返回一个SelectorList,它具有一个自己的.get()方法。
使用它会得到想要的结果:

>>> fetch('http://example.com')
2019-08-14 14:28:03 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://example.com> (referer: None)
>>> response.xpath('//a/@href').get('')
'http://www.iana.org/domains/example'
>>> response.xpath('//fake/a/@href').get('')
''

答案 1 :(得分:1)

[0]在这里过多。 使用response.xpath("//selector").get() or ''