我正在尝试使用 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/