BeautifulSoup4 - AttributeError:' ResultSet'对象没有属性' text'

时间:2017-01-15 21:53:56

标签: python regex beautifulsoup

import requests
import re
from bs4 import BeautifulSoup

url = "http://www.sherdog.com/fighter/1"
r = requests.get(url)

soup = BeautifulSoup(r.content)

links = soup.find_all("a")

g_data = soup.find_all("div", {"class": "module fight_history"})

for item in g_data:
 print item.contents[3].find_all(href=re.compile("/fighter")).text

我得到的错误是:

AttributeError: 'ResultSet' object has no attribute 'text'

我已经发现我可以单独运行每条打印行:

for item in g_data:
 print item.contents[3].find_all(href=re.compile("/fighter"))[0].text
 print item.contents[3].find_all(href=re.compile("/fighter"))[1].text
 print item.contents[3].find_all(href=re.compile("/fighter"))[2].text
 print item.contents[3].find_all(href=re.compile("/fighter"))[3].text

这将输出:

Tony Lopez
Joey Villasenor
Brian Sleeman
Reggie Cardiel

显然我在这里做错了。获得上述输出的最合理的方法是什么,而不必反复计算和重复相同的行?

1 个答案:

答案 0 :(得分:0)

find_all()会返回元素列表,您必须分别对每个元素使用text

elements = item.contents[3].find_all(href=re.compile("/fighter"))

for x in elements:
    print( x.text )