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
感谢您的帮助。
答案 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'}))