python - BeautifulSoup 不读取请求获得的整个 HTML

标签 python html beautifulsoup

我正在尝试使用 BeautifulSoup 和 requests 库从以 HTML 形式呈现的体育统计表中抓取数据。我在 Python 3.5 上运行它们。我似乎通过请求成功获取了 HTML,因为当我显示 r.content 时,会显示我试图抓取的网站的完整 HTML。但是,当我将其传递给 BeautifulSoup 时,BeautifulSoup 会丢弃大量 HTML,这些 HTML 本身就是统计表。

如果你看一下 website有问题的是,从“Scoring Progression”开始的 HTML 被删除了。

我认为问题与方括号(“[”和“]”)之间包含的 HTML 片段有关,但我无法制定解决方法。我已经尝试了 BeautifulSoup 的 html、lxml 和 html5lib 解析器,但无济于事。我也试过提供“用户代理” header ,但也没有用。

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

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”的操作,它似乎会丢弃其他表,因为它只返回第一个表。

关于python - BeautifulSoup 不读取请求获得的整个 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36024900/

相关文章:

python - 如何在Python中使用group-by函数保留列名?

python - 用 Python 替换文件中的文本

python - 多维数组无需询问即可自行转置

python - 合并具有不同索引的两个数据帧

100%宽度水平渐变效果的HTML/CSS设计

python - 使用美丽汤通过文本内容查找元素,而不是文本?

php - 从用户获取数据库用户、密码、名称和主机信息并想要更新数据库列信息

python - 使用Python模块BeautifulSoup抓取XML,需要树中的特定标签

python - 在 BeautifulSoup 中用字典解析脚本标签

python - BeautifulSoup 用 python 抓取表 id