我正试图抓取一个配方网站,它的成分被分成不同的类别,由HTML中的<strong>
标记描述,如下所示:
<div class="opskriften">
<p class="h3">Ingrediensliste</p>
<p></p>
<p><strong>Påskeæg med nougat (6 stk)</strong><br>150 g. marcipan <br>ca. 40 g. nougat<br>150 g. mørk chokolade <br>50 g. lys chokolade </p>
我设法将成分按数量、单位和成分分为不同的列,但在尝试为<strong>
标记内的内容创建另一列时遇到了问题。你知道吗
这是我使用的代码。你知道吗
ingredients = soup.find('div', class_='opskriften')
#if len(ingredients.find_all('strong'))>0:
s = f"{ingredients}"
r = re.compile(r"(?P<amount>\d+)\s+(?P<unit>\w+.)\s+(?P<ingredient>.+?(?=<))")
df = pd.DataFrame([m.groupdict() for m in r.finditer(s)])
with open("somefile.csv", 'w') as fh:
df.to_csv(fh)
我试着玩RegEx,但找不到任何解决办法使它工作。你知道吗
如果所有
div
的看起来相同,您可以用BeautifulSoup解析成分。这依赖于<strong>
标记是包含所有成分的<p>
标记的子标记:如果包含所有成分的
<p>
标记总是div
中的最后一个<p>
标记,那么您可以这样找到它。你知道吗这里我有一些建议给你。由于语言的原因,解析可能会有问题,这就是为什么br标记的打开被取消了
我把输出放在dict的列表中,所以它可以被任何地方使用。你知道吗
相关问题 更多 >
编程相关推荐