Python BeautifulSoup未读取请求获取的整个HTML

Python BeautifulSoup未读取请求获取的整个HTML,python,html,beautifulsoup,Python,Html,Beautifulsoup,我试图使用BeautifulSoup和requests库从以HTML形式呈现的体育统计表中提取数据。我正在Python3.5上运行这两个程序。我似乎通过请求成功地获得了HTML,因为当我显示r.content时,会显示我试图抓取的网站的完整HTML。然而,当我把它传递给BeautifulSoup时,BeautifulSoup会删除大部分HTML,它们本身就是统计表 如果您看一看有问题的,从“评分进度”开始的HTML将被删除 我认为问题与包含在括号(“[”和“]”)之间的HTML片段有关,但我还没

我试图使用BeautifulSoup和requests库从以HTML形式呈现的体育统计表中提取数据。我正在Python3.5上运行这两个程序。我似乎通过请求成功地获得了HTML,因为当我显示
r.content
时,会显示我试图抓取的网站的完整HTML。然而,当我把它传递给BeautifulSoup时,BeautifulSoup会删除大部分HTML,它们本身就是统计表

如果您看一看有问题的,从“评分进度”开始的HTML将被删除

我认为问题与包含在括号(“[”和“]”)之间的HTML片段有关,但我还没有找到解决方法。我已经为BeautifulSoup尝试了html、lxml和html5lib解析器,但没有成功。我也尝试过提供“用户代理”标题,但这也不起作用

我的代码如下。为了简洁起见,我没有包括输出

import requests
from bs4 import BeautifulSoup

r = requests.get('http://afltables.com/afl/stats/games/2015/031420150402.html')

soup = BeautifulSoup(r.content, 'html5lib')

print(soup)

我使用了一个不同的解析器,它似乎可以工作;只是默认的html解析器

from bs4 import BeautifulSoup
from urllib.request import urlopen as uReq

url = 'http://afltables.com/afl/stats/games/2015/031420150402.html'
client = uReq(url)  # grabs the page
soup = BeautifulSoup(client.read(), 'html.parser')  # using the default html parser
tables = soup.find_all('table')  # gets all the tables
print(tables[7])  # scoring progression table, the 8th's table

虽然如果您在没有先使用“find_all”子句的情况下尝试了类似“soup.table”的内容,但它似乎会删除其他表,因为它只返回第一个表。

使用
lxml
,甚至不使用解析器(默认为
lxml
)。@roadrunner66-beautifulsou警告如果您忽略解析器。UserWarning:没有明确指定语法分析器,所以我使用了这个系统中最好的HTML语法分析器(“lxml”)。这通常不是问题,但是如果您在另一个系统上或在不同的虚拟环境中运行此代码,它可能会使用不同的解析器,并且表现不同。是的。是的。非常感谢你的帮助,这无疑让我更接近一个解决方案。唯一的问题是,当我打印
表时,
,我没有得到BeautifulSoup应该显示为的嵌套元素树。我还没有在
soup
中获得全部HTML。请问,您是否将从
soup
打印的HTML与实际的页面源代码进行了比较?我想我没有很好地表达我在制作汤时所缺少的东西。我现在还想知道问题是否不在于BeautifulSoup,而是我是如何使用请求的,因为您从urllib获得了不同的结果?是的,我会使用urllib,因为它是最受支持的HTTP请求包。如果您使用的是Python 3,请使用urllib。如果您使用的是Python 2,请使用urllib2。另外,是的,我确实将实际的HTML文档与我的汤进行了比较,我的汤成功地将所有内容都添加到汤中。