Python 为什么不是';找不到返回完整结果的\u all()?
尝试检索体育参考页上的4个统计框。4个统计框(两个团队,基本和高级统计)可以在“tfoot”下找到。但是,以下代码仅返回页面的基本统计框:Python 为什么不是';找不到返回完整结果的\u all()?,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,尝试检索体育参考页上的4个统计框。4个统计框(两个团队,基本和高级统计)可以在“tfoot”下找到。但是,以下代码仅返回页面的基本统计框: import requests from bs4 import BeautifulSoup r = requests.get("https://www.sports-reference.com/cbb/boxscores/2016-11-11- villanova.html") c = r.content soup = BeautifulSoup(c)
import requests
from bs4 import BeautifulSoup
r = requests.get("https://www.sports-reference.com/cbb/boxscores/2016-11-11-
villanova.html")
c = r.content
soup = BeautifulSoup(c)
boxes = soup.find_all("tfoot")
len(boxes)
我需要在代码中指定什么来检索所有四个框?其中两个表隐藏在HTML注释中,它们都可以按如下方式提取:
import requests
from bs4 import BeautifulSoup, Comment
r = requests.get("https://www.sports-reference.com/cbb/boxscores/2016-11-11-villanova.html")
soup = BeautifulSoup(r.content, 'html.parser')
boxes = list(soup.find_all("tfoot"))
for comment in soup.find_all(string=lambda text:isinstance(text, Comment)):
if 'tfoot' in comment:
hidden_soup = BeautifulSoup(comment, 'html.parser')
boxes.extend(list(hidden_soup.find_all("tfoot")))
data = []
for box in boxes:
for tr in box.find_all('tr'):
data.append([td.text for td in tr.find_all('td')])
for row in data:
print row
向您提供以下数据:
[u'200',u'19',u'65',u'.292',u'13',u'33',u'.394',u'6',u'32',u'.188',u'4',u'7',u'.571',u'4',u'22',u'26',u'12',u'3',u'0',u'13',u'15',u'48']
[u'200',u'33',u'67',u'493',u'18',u'26',u'692',u'15',u'41',u'366',u'7',u'12',u'583',u'9',u'41',u'50',u'15',u'8',u'14',u'88']
[u'200',u'351',u'338',u'492',u'108',u'8.9',u'71.0',u'34.2',u'63.2',u'4.0',u'0.0',u'16.0',u'100.0',u'64.0',u'117.3']
[u'200',u'605',u'604',u'612',u'179',u'29.0',u'91.1',u'65.8',u'45.5',u'10.7',u'12.1',u'10.0',u'100.0',u'117.3',u'64.0']
您建议阅读哪些资源,以便我更好地理解HTML布局,使我的web解析更准确?Beautiful Soup文档似乎是一个开始,但当我不确定首先要查找什么时,它会让我感到非常激动。我同意在尝试学习Beautiful Soup之前最好先理解HTML。任何HTML介绍都会有所帮助。YouTube上有很多HTML介绍视频,你可以观看。