我正在尝试从使用BeautifulSoup呈现为HTML的运动统计表中提取数据并请求库。我在Python 3.5上运行它们。我似乎通过请求成功获取HTML,因为当我显示r.content
时,显示我试图抓取的网站的完整HTML。但是,当我将它传递给BeautifulSoup时,BeautifulSoup会丢弃大部分HTML,这些HTML本身就是统计表。
如果你看看有问题的website,那么“Scoring Progression”中的HTML就会被删除。
我认为问题与括号('['和']')之间的HTML部分有关,但我无法开发出一种解决方法。我试过BeautifulSoup的html,lxml和html5lib解析器,但没有用。我也试过提供'User-Agent'标题,但也没有用。
我的代码如下。为了简洁起见,我没有包括输出。
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)
答案 0 :(得分:1)
我使用了不同的解析器,它似乎工作;只是默认的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”的东西,那么它似乎会丢弃其他表,因为它只返回第一个表。