【问题标题】:Scraping table data from a Wikipedia page从 Wikipedia 页面抓取表格数据
【发布时间】:2020-10-14 04:40:39
【问题描述】:

我正在学习如何在 Python 中使用 BeautifulSoup 库,为了练习,我正在尝试从这个 Wikipedia 页面中删除流派标题: https://en.wikipedia.org/wiki/List_of_jazz_genres

我已经能够在我的代码中做到这一点:

from bs4 import BeautifulSoup

html = open("wiki-jazz.html", encoding="utf=8")
soup = BeautifulSoup(html, "html.parser")

table = soup.find_all("table")[1]
td = table.find_all("td")
print(td)

table[1] 包含我要访问的数据。更具体地说,我真的只需要位于此标题属性中的数据:

</td>, <td><a href="/wiki/West_Coast_jazz" title="West Coast jazz">West Coast jazz</a>

我一直在琢磨如何提取这些信息。我看过这里的其他帖子,但不能完全到达那里。 谢谢。

【问题讨论】:

标签: python html


【解决方案1】:

要打印表格的第一列,您可以遍历行 (&lt;tr&gt;),然后获取行的所有单元格 (&lt;td&gt;)。每行的第一个单元格是您的爵士乐类型:

import requests
from bs4 import BeautifulSoup

url = 'https://en.wikipedia.org/wiki/List_of_jazz_genres'
soup = BeautifulSoup(requests.get(url).content, "html.parser")

table = soup.find_all("table")[1]

for row in table.find_all('tr')[1:]:    # <-- [1:] because we don't want the header
    cells = [td.get_text(strip=True) for td in row.find_all('td')]
    print(cells[0])

打印:

Acid jazz
Afro-Cuban jazz
Avant-garde jazz
Bebop
Bossa nova
British dance band
Cape jazz
Chamber jazz
Continental jazz
Cool jazz
Crossover jazz
Dark jazz/Doomjazz[1][2][3]
Dixieland
Electro Swing
Ethio jazz
Ethno jazz
European free jazz
Free funk
Free jazz
Frevo
Gypsy jazz
Hard bop
Hot club
Indo jazz
Jazz blues
Jazz-funk
Jazz fusion
Jazz rap
Jazz rock
Kansas City blues
Kansas City jazz
Latin jazz
M-Base
Mainstream jazz
Modal jazz
Neo-bop jazz
Neo-swing
Neo-bop jazz
Novelty ragtime
Nu jazz
Orchestral jazz
Post-bop
Punk jazz
Ragtime
Ska jazz
Smooth jazz
Soul jazz
Straight-ahead jazz
Stride jazz
Swing
Third stream
Trad jazz
Vocal jazz
West Coast jazz

【讨论】:

  • 感谢您的帮助。使用单元格行,您创建了一个列表,对吗?如果是这种情况,它如何 cells[0] 不只是打印第一个索引值?我要研究这段代码。
  • @Connor 是的,cells = [...] 被称为 list-comprehension 并创建新列表。要从此列表中获取第一个值,只需调用 cells[0]
【解决方案2】:

您应该阅读 Beautifulsoup 文档,了解如何在标签中获取属性,如 href src 等

这里可以使用

item[1].get(‘title’)

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多