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
显然我在这里做错了。获得上述输出的最合理的方法是什么,而不必反复计算和重复相同的行?
答案 0 :(得分:0)
find_all()
会返回元素列表,您必须分别对每个元素使用text
elements = item.contents[3].find_all(href=re.compile("/fighter"))
for x in elements:
print( x.text )