Python& BeautifulSoup:关于soup.find_all的问题

时间:2017-10-22 15:53:33

标签: python beautifulsoup

h1 = soup.find('a', {'class': 'lien-jv topic-title'})['title']
print (h1)

使用soup.find函数获取title标签中的值没有问题。 但是在我正在解析的页面上有多个这样的标签,所以我使用了soup.find_all函数,但它没有工作。

使用此代码

    h1 = soup.find_all('a', {'class': 'lien-jv topic-title'})['title']
    print (h1)

我有这个错误

Traceback (most recent call last):
  File "<tmp 1>", line 8, in <module>
    h1 = soup.find_all('a', {'class': 'lien-jv topic-title'})['title']
TypeError: list indices must be integers, not str

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这应该有效:

results = [a['title'] for a in soup.find_all('a', {'class': 'lien-jv topic-title'})]

答案 1 :(得分:1)

您应该记住,find_all函数会返回您已过滤的soup个对象的列表,在您的情况下为class

接下来你要做的是:

h1 = soup.find_all('a', {'class': 'lien-jv topic-title'})['title'] soup.find_all('a', {'class': 'lien-jv topic-title'})是一个列表,您尝试访问错误的['title']

这是从{

}接收title的最佳方式

titles = map(lambda soup_object: soup_object['title'], soup.find_all('a', {'class': 'lien-jv topic-title'}))