猿问

从维基百科页面抓取表数据

我正在学习如何通过 Python 使用 BeautifulSoup 库,为了练习,我尝试从这个维基百科页面中删除流派标题: 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>

我一直在绞尽脑汁地思考如何提取这些信息。我已经看过这里的其他帖子,但无法完全理解。谢谢。


一只甜甜圈
浏览 121回答 2
2回答

萧十郎

要打印表格的第一列,您可以迭代行 ( <tr>),然后获取行 ( <td>) 的所有单元格。每行的第一个单元格是您的爵士乐流派:import requestsfrom bs4 import BeautifulSoupurl = '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:]:&nbsp; &nbsp; # <-- [1:] because we don't want the header&nbsp; &nbsp; cells = [td.get_text(strip=True) for td in row.find_all('td')]&nbsp; &nbsp; print(cells[0])印刷:Acid jazzAfro-Cuban jazzAvant-garde jazzBebopBossa novaBritish dance bandCape jazzChamber jazzContinental jazzCool jazzCrossover jazzDark jazz/Doomjazz[1][2][3]DixielandElectro SwingEthio jazzEthno jazzEuropean free jazzFree funkFree jazzFrevoGypsy jazzHard bopHot clubIndo jazzJazz bluesJazz-funkJazz fusionJazz rapJazz rockKansas City bluesKansas City jazzLatin jazzM-BaseMainstream jazzModal jazzNeo-bop jazzNeo-swingNeo-bop jazzNovelty ragtimeNu jazzOrchestral jazzPost-bopPunk jazzRagtimeSka jazzSmooth jazzSoul jazzStraight-ahead jazzStride jazzSwingThird streamTrad jazzVocal jazzWest Coast jazz

慕森王

您应该阅读 Beautifulsoup 文档,了解如何获取标签内的属性,如 href src 等在这里你可以使用item[1].get(‘title’)
随时随地看视频慕课网APP
我要回答