将数据附加到Python数组会出错

时间:2016-01-07 20:17:25

标签: python arrays

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

我得到的错误是“IndexError:列表分配索引超出范围”

以下是代码:

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

你也可以使用列表理解:

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