代码在一周前可以正常工作,现在我遇到了错误,但未更改代码中的任何内容

时间:2019-03-21 17:59:17

标签: python python-3.x

我写了一个小型的网页抓取工具,几周前运行良好,但现在却出现了错误,而我没有更改代码的任何部分。我的代码在下面列出以供参考:

address = driver.find_elements_by_xpath('//h3[@class = "street"]')
price = driver.find_elements_by_xpath('//div[@class = "price"]')
details = driver.find_elements_by_xpath('//div[@class = "details"]')

num_page_items = len(details)
with open('results.csv', 'a') as f:
    for x in range(num_page_items):
        f.write(address[x].text + " , " + price[x].text.replace(",", "") + "," + details[x].text + "\n")

我正在使用硒(由于代码的那部分工作正常,我省略了导入和设置),并且在运行代码时出现以下错误:

line 25, in <module>
    f.write(address[x].text + " , " + price[x].text.replace(",", "") + "," + details[x].text + "\n")
IndexError: list index out of range

我做了一些研究,但是当我打印len(details)时我得到了24,这表明detail变量中有值。既然定义了范围,并且得到列表长度的结果,为什么会出现超出范围的错误?

1 个答案:

答案 0 :(得分:1)

您的代码假定每个数组的长度都相同,但这并不能保证。就像其他人所说的,如果网站的设计已更改,请重新考虑您的实现。

或者,如果您想停止引发错误,则可以查看内置的zip库。 https://docs.python.org/3.3/library/functions.html#zip

这会将您的数组组合成一个元组数组,创建n个元组,其中n是最小数组的长度。但是请考虑一下,如果网站更改了设计,则新创建的zip的意义可能无效。