【问题标题】:Appending data to a Python array is giving an error将数据附加到 Python 数组会出错
【发布时间】:2016-01-07 20:17:24
【问题描述】:

我正在使用 beautifulsoup 进行练习,我试图让代码隔离页面中找到的链接,然后检索它们。我的 "print (link.get("href"))" 行打印了整个链接列表,因此该部分有效。我正在努力的是现在能够将列表保存到一个数组中,以便我可以使用数据。在此示例中,我尝试打印列表中的第 5 个元素。

我得到的错误是“IndexError: list assignment index out of range”

下面是代码:

import requests
from bs4 import BeautifulSoup

i=0
array1 = []
r = requests.get("http://www.yellowpages.ca/bus/Quebec/Rimouski/Walmart/8139565.html")
var = r.content

soup= BeautifulSoup(var)

soup.find_all("a")
for link in soup.find_all("a"):
    print (link.get("href"))
    array1[i+1] = link.get("href")

print (array1(5))

谢谢。

使用 Python 3.4 和 bs4

【问题讨论】:

  • 您收到错误是因为数组中的第二个元素不存在并且您尝试以不正确的方式添加它。将array1[i+1] = link.get("href") 更改为array1.append(link.get("href")) 应该没问题。
  • 感谢 brittenb,这行得通!
  • 你能把它作为答案发布,这样我就可以给问题贴上回答的标签

标签: python arrays


【解决方案1】:

您收到错误的原因是数组中的第二个元素不存在。因此,当您尝试通过分配给第二个元素来索引数组时(请记住,Python 索引从 0 开始),Python 会告诉您该元素不存在并且它会停止。为了解决这个问题,我们必须以正确的方式附加我们的数据。我们只需将array1[i+1] = link.get("href") 更改为array1.append(link.get("href")) 即可。

【讨论】:

    【解决方案2】:

    您也可以使用列表推导:

    array1 = [link.get('href') for link in soup.find_all('a')]

    【讨论】:

      猜你喜欢
      • 2018-07-03
      • 2018-05-29
      • 2020-01-18
      • 2015-01-04
      • 2020-04-03
      • 2017-07-07
      • 2017-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多