2016-01-07 37 views
1

我与beautifulsoup练,我想有代码分离页面中的链接,然后检索它们。我的“print(link.get(”href“))”行打印整个链接列表,以便部分工作。我正在努力的是现在能够将列表保存到一个数组中,以便我可以玩数据。在这个例子中,Iam试图在列表中打印第五个元素。数据附加到一个Python数组给了一个错误

我得到的错误是 “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

+1

你得到的错误,因为数组中的第二个元素不存在,你想将其添加到不正确的方法。把'array1 [i + 1] = link.get(“href”)'改成'array1.append(link.get(“href”))'你应该没问题。 – brittenb

+0

谢谢brittenb,这工作! – LearnIT

+0

你可以将它作为答案发布,所以我可以标记回答的问题 – LearnIT

回答

2

你得到错误的原因是因为数组中的第二个元素不存在。所以当你尝试通过赋值给第二个元素来索引数组时(请记住,Python索引从0开始),Python告诉你元素不存在并停止。为了解决这个问题,我们必须以正确的方式追加我们的数据。我们可以简单地通过将array1[i+1] = link.get("href")更改为array1.append(link.get("href"))来完成此操作。

1

您也可以使用列表理解:

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

相关问题