将表数据刮入Datafram

2024-09-26 17:42:51 发布

您现在位置:Python中文网/ 问答频道 /正文

示例URL是“http://www.hockey-reference.com/players/c/crosbsi01/gamelog/2016

我想抢到的表名是“常规赛”。在

我在以前的例子中是这样做的。。。在

import requests
from bs4 import *
from bs4 import NavigableString
import pandas as pd


url = 'http://www.hockey-reference.com/players/o/ovechal01/gamelog/2016'
resultsPage = requests.get(url)
soup = BeautifulSoup(resultsPage.text, "html5lib")
comment = soup.find(text=lambda x: isinstance(x, NavigableString) and "Regular Season  Table" in x)
df = pd.read_html(comment)

这是我对一个类似于这个网站的方法,但是,我无法在这个页面上正确定位表。不知道我错过了什么。在


Tags: fromimportcomhttpurlwwwrequestspd
1条回答
网友
1楼 · 发布于 2024-09-26 17:42:51

有一个表可以使用id获取:

import requests
from bs4 import BeautifulSoup


url = 'http://www.hockey-reference.com/players/o/ovechal01/gamelog/2016'
resultsPage = requests.get(url)
soup = BeautifulSoup(resultsPage.text, "html5lib")
table = soup.select_one("#gamelog")
print(table)

或者只使用熊猫:

^{pr2}$

您的代码永远无法工作,因为您正在查找位于标题标记<caption>Regular Season Table</caption>中的NavigableString而不是表中,您需要调用*。查找_previous`*以获取表:

comment = soup.find(text=lambda x: isinstance(x, NavigableString) and "Regular Season  Table" in x)
table = comment.find_previous("table")

您也可以使用table = comment.parent.parent,但find\u previous是一种更好的方法。在

相关问题 更多 >

    热门问题