我正在使用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
答案 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')]