findALL无法正常工作

时间:2014-06-05 11:11:59

标签: python beautifulsoup

这就是我试图获取所有链接的方式:

soup.find("div", attrs={"class": "vl-article-title"}).find("h3").find("span").find("a")

这只找到第一个,但正如我所说,我需要所有这些。

为什么这不起作用:

soup.findAll("div", attrs={"class": "vl-article-title"}).find("h3").find("span").find("a")

我收到错误:

'ResultSet' object has no attribute 'find'

3 个答案:

答案 0 :(得分:5)

for i in soup.findAll(...):
    i.find("h3").find("span").find("a")

答案 1 :(得分:2)

findAll返回ResultSet,其中没有方法find。您可以将ResultSet视为一种列表,因此您可以像pacholik建议的那样对其进行迭代。

答案 2 :(得分:1)

在这种情况下,您不会使用findAll获得任何结果,因为

findAll()

返回bs4对象的列表。您需要做的是遍历每个对象并运行

find()

他们。你可以做类似的事情:

list_of_divs = soup.findAll("div", attrs = {"class" : "vl-article-title"})
#now iterate over every div
for i in list_of_divs:
    link = i.find("h3").find("span").find("a")
    print link.getText() + " : " + link["href"]