使用BeautifulSoup创建Spry框架的刮削表

2024-07-04 15:39:22 发布

您现在位置:Python中文网/ 问答频道 /正文

此页包含我要与BeautifulSoup一起废弃的表:
Flavors of Cacao - Chocolate Database

这个表位于一个id为divspryregion1div中,但是它不能用id来定位,因此我用表的宽度来定位它,然后定位所有的tr元素。你知道吗

printing all 'tr' elements

列标题包含在th元素中,每一行条目都包含在td中。我尝试了几种方法,但无法将所有行刮到CSV文件中。你知道吗

有人能给我一些帮助/建议吗?谢谢!你知道吗

An article I found on creating Spry Regions


Tags: of定位divid元素标题宽度database
1条回答
网友
1楼 · 发布于 2024-07-04 15:39:22

您要查找的表不包含在所请求页面的HTML中。该页面使用Javascript请求另一个包含它的HTML文档,然后使用您要查找的<div>包装该文档。你知道吗

要获取该表,可以使用浏览器工具发现页面请求的URL,并使用此工具获取所需的页面:

import requests
from bs4 import BeautifulSoup
import csv

r = requests.get("http://flavorsofcacao.com/database_w_REF.html")
soup = BeautifulSoup(r.content, "html.parser")

with open('output.csv', 'w', newline='', encoding='utf-8') as f_output:
    csv_output = csv.writer(f_output)
    csv_output.writerow([th.get_text(strip=True) for th in soup.table.tr.find_all('th')])

    for tr in soup.table.find_all("tr")[1:]:
        csv_output.writerow([td.get_text(strip=True) for td in tr.find_all('td')])

在那里,您可以首先通过搜索<th>条目来提取标题行,然后迭代所有行。可以使用Python的CSV库将数据写入CSV文件。你知道吗

给你一个output.csv文件开始:

Company (Maker-if known),Specific Bean Origin or Bar Name,REF,Review Date,Cocoa Percent,Company Location,Rating,Bean Type,Broad Bean Origin
A. Morin,Bolivia,797,2012,70%,France,3.5,,Bolivia
A. Morin,Peru,797,2012,63%,France,3.75,,Peru
A. Morin,Brazil,1011,2013,70%,France,3.25,,Brazil

使用Python3.6.3测试

相关问题 更多 >

    热门问题