【问题标题】:how do I web scrape a table with beautifulsoup?我如何用beautifulsoup 在网上刮一张桌子?
【发布时间】:2021-12-27 04:23:28
【问题描述】:

这可能不是最聪明的问题,但我花了大约一个小时试图弄清楚并进行研究,结果却一无所获。作为最后的手段,我在这里发布我的问题。

我正在使用的网站是https://en.wikipedia.org/wiki/List_of_Super_Bowl_halftime_shows,我想抓取历史记录下列出的表格。

当我检查页面时,我发现它位于带有特定标题的锚标记下

我不介意单独/手动抓取每个表格,但无论我如何尝试使用相应的锚点和标题导航到表格,我的 bs(beautifulsoup) 对象都没有表格的任何内容。

我猜 href 属性是用来显示表格的,所以我的问题是如何抓取正在使用另一个我无权访问的链接的网页的内容?

【问题讨论】:

  • 你想抓取“历史”下的所有个表吗?
  • 是的,每一个超级碗赛事
  • 我看到它引用了一个链接来显示表格。也许我错了。但我看不到如何访问该表,因为似乎维基百科上使用的链接与发布它的用户的一些本地路径/链接有关。
  • 你安装了 pandas 库吗?
  • 是的,我在这个项目中使用熊猫。你可以假设我知道 python 数据科学的基础知识

标签: python-3.x web-scraping beautifulsoup


【解决方案1】:

由于您使用的是pandas,因此您可以使用read_html() 获取所有表并使用索引访问特定表。

import pandas as pd


df = pd.read_html("https://en.wikipedia.org/wiki/List_of_Super_Bowl_halftime_shows")
print(df[0].to_string()) # <-- Acess the first table

【讨论】:

  • TypeError: 无法从“响应”解析
  • 您如何使用read_html?像我一样给它传递一个 URL
  • URLError:
  • 第一个错误是我的错误,我没有使用 url。但是我直接复制并粘贴了您的建议,我收到了这个错误
  • 我修好了。现在可以使用了
猜你喜欢
  • 2019-08-23
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多