使用python3从网页中抓取特定表格(网页有多个表格)

我正在尝试从网页上的特定表格中提取数据。页面上有多个表,所以我试图使用表 ID 仅提取所需的表。

网址:https://basketball.realgm.com/player/Luke-Nelson/Summary/50483

我到目前为止的代码如下。

from urllib.request import urlopen

from bs4 import BeautifulSoup

import pandas as pd

import ssl



# Ignore SSL certificate errors

ctx = ssl.create_default_context()

ctx.check_hostname = False

ctx.verify_mode = ssl.CERT_NONE


#URL input

url = 'https://basketball.realgm.com/player/Luke-Nelson/Summary/50483'

html = urlopen(url, context=ctx).read()

soup = BeautifulSoup(html, "html.parser")


table = soup.find('table', id='table-1696')

print(table)

我假设 print 语句会从表中打印 HTML(以前只在一张表上工作)但是当我运行程序时它有以下输出:

终端输出

最终我的目标是在 python 中重新创建表并导出到 excel,但无法克服第一个障碍!


HUWWW
浏览 104回答 3
3回答

冉冉说

使用 pandas 获取表格标签并使用 id 属性选择您想要的:import pandas as pdurl = 'https://basketball.realgm.com/player/Luke-Nelson/Summary/50483'df = pd.read_html(url, attrs={'id':'table-1696'})[0]

尚方宝剑之说

你可以使用熊猫:import pandas as pddf = pd.read_html(url) # df -> list of tablesprint(len(df)) # 29 你可以选择你想要的表格。

一只名叫tom的猫

表 ID 是动态分配的,因此我建议使用另一种方法来访问您的表。假设您想获取 NBA 夏季联赛统计数据 - 总计的表格,请尝试:table_heading = 'NBA Summer League Stats - Totals'table = soup.find(string=re.compile(table_heading))          .find_parent()          .find_next_sibling()print(table)table_heading您可以为表格中的其他标题更改。让我知道是否有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python