gpt4 book ai didi

python - 如何在维基百科页面中抓取一页的多个表格?

转载 作者:太空宇宙 更新时间:2023-11-03 14:39:16 26 4
gpt4 key购买 nike

我正在尝试将下一页的所有表格拼凑成一张大表格; https://en.wikipedia.org/wiki/List_of_QI_episodes

但问题是我的代码似乎只下载 Pilot 表而没有下载其他表。我查看了 html 并注意到它们都具有相同的类,那么我如何区分它们。

提前致谢。

import requests
import pandas as pd
from bs4 import BeautifulSoup
page = requests.get("https://en.wikipedia.org/wiki/List_of_QI_episodes")
soup = BeautifulSoup(page.content, "lxml")
My_table = soup.find("table",{"class":"wikitable plainrowheaders wikiepisodetable"})
print(My_table)

最佳答案

如果你想定位所有表,你可以只选择所有符合你条件的表 select 将返回所有表:

import requests
from bs4 import BeautifulSoup
page = requests.get("https://en.wikipedia.org/wiki/List_of_QI_episodes")
soup = BeautifulSoup(page.content, "lxml")
print(soup.select("table.wikitable.plainrowheaders.wikiepisodetable")

如果你想单独定位每个表,你可以使用 :has() 选择器来定位包含你想要的特定 id 的表之前的标题喜欢,然后是将找到下一个 child 的 + 组合器。这是一个针对其中两个表的简单示例。

import requests
from bs4 import BeautifulSoup
page = requests.get("https://en.wikipedia.org/wiki/List_of_QI_episodes")
soup = BeautifulSoup(page.content, "lxml")
for tid in ('Pilot', 'Series_A_\\.282003\\.29'):
table = soup.select_one("h3:has(span#{}) + table.wikitable.plainrowheaders.wikiepisodetable".format(tid))
print(table)

您可以扩展类似的逻辑来定位您想要的任何内容。

编辑:在第二个示例中使用 select_one,因为我们的目标是单个表而不是许多表。

关于python - 如何在维基百科页面中抓取一页的多个表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54718926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com