BeautifulSoup“桌子汤”不会给我所有桌子

时间:2018-07-15 19:05:09

标签: python web-scraping beautifulsoup

我正在尝试从注释中的表中抓取玩家数据。我使用了find_all,但是它只返回一个表。

以下是链接:https://www.baseball-reference.com/boxes/ANA/ANA201806180.shtml

这是我的代码。知道为什么它只返回一个球员数据表而不是全部吗?我也将页面保存在本地。

# import libraries and files
from bs4 import BeautifulSoup
import re

# Get Page
soup = BeautifulSoup(open("D:/My Web Sites/baseball 2/www.baseball-reference.com/boxes/ANA/ANA201806180.html"), "html.parser")

# use table text find comment text
table_text = soup.find(text=re.compile('table class="sortable stats_table"')) 

# use bs4 to parse the text
table_soup = BeautifulSoup(table_text, 'lxml')

# Player Data from Tables
player_data = table_soup.find_all('tr')

print player_data

1 个答案:

答案 0 :(得分:0)

您没有从该站点获取所有表格内容,因为它们都位于comment之内。获取它们的过程与通常的过程略有不同。

查看this link了解更多详细信息。

试一下从该站点获取所有表格数据:

import requests
from bs4 import BeautifulSoup, Comment

res = requests.get("https://www.baseball-reference.com/boxes/ANA/ANA201806180.shtml",headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, 'lxml')
for comment in soup.find_all(string=lambda text:isinstance(text,Comment)):
    data = BeautifulSoup(comment,"lxml")
    for items in data.select("table tr"):
        tds = [' '.join(item.text.split()) for item in items.select("th,td")]
        print(tds)