【发布时间】:2020-11-13 17:31:31
【问题描述】:
我对网络抓取很陌生,但我正在一点一点地取得进步;但是对于这个,我真的很难过。
我想做的是从 ESPN NBA boxscore 网站上抓取:http://espn.com/nba/boxscore?gameId=401160948
我想在两张表的末尾刮掉没有参加/参加的玩家的名字(标有“DNP”),然后将它们附加到一个列表中。
这是我的代码:
from bs4 import BeautifulSoup
page = requests.get('https://espn.com/nba/boxscore?gameId=401160948')
soup = BeautifulSoup(page.content, 'html.parser')
main_container = soup.find(id='main-container')
data = []
for hstat in main_container.find_all('tbody')[0]:
player_info = {}
player_info['name'] = hstat.find("td", {"class": "name"}).find('span').get_text()
data.append(player_info)
print(data)
上面的代码适用于 tbody[0] 和 tbody[2],可能是因为所有 tds 中的完整信息?不太确定。但是,对于包含 DNP 的玩家 td 值的 tbody[1] 和 tbody[4],它不起作用,我正在尝试制作一张没有玩过的玩家的表格,所以我也不需要来自 tbody[1] 和 [4] 的其他玩家也玩过,我也不知道如何排除,因为此时我已经缺乏解决方案。
我应该在这里做什么?需要帮助
谢谢。
【问题讨论】:
标签: python html flask web-scraping screen-scraping