Я пытаюсь очистить веб-сайт с рецептами и испытываю трудности, пытаясь разделить строку на разные предложения после тега <br>
.
Для лучшего понимания проблемы я покажу вамкод и вывод, о котором я говорю.
Ниже приведен фрагмент HTML, над которым я работаю.
<div class="opskriften">
<p class="h3">Ingrediensliste</p>
<p></p>
<p>100 g. mælkechokolade<br>20 g. mini marshmallows<br>40 g. saltede peanuts</p>
<p>
</p></div>
Я хочу каким-то образом отделить каждый ингредиент после тега <br>
, чтобы потом можно было разделить строки еще дальше, чтобы в итоге получить таблицу с 3 различными столбцами (количество, единица, ингредиент).Следующий код - это то, что я использовал для получения определенного тега <p>
.
from bs4 import BeautifulSoup
import requests
r = requests.get("site")
soup = BeautifulSoup(r.content)
ingredients = soup.find('div', class_='opskriften')
ingredientslist = ingredients.select_one("p:nth-oftype(2)")
print(ingredientslist)
Вывод следующий:
<p>100 g. mælkechokolade<br/>20 g. mini marshmallows<br/>40 g. saltede peanuts</p>
Как можно разделить эти ингредиенты, чтобы потомбыть в состоянии применить регулярное выражение, чтобы соответствовать всему и поместить его в правильные столбцы, как описано выше?
Я попытался использовать регулярное выражение, как показано ниже, но я получаю AttributeError: 'NoneType' object has no attribute 'groups'
, поэтому я предполагаю, что мне нужноразделите их, чтобы правильно применить.
pattern_text=r'(?P<amount>\d+):\s+(?P<unit>\w+):\s+(?P<ingredient>\w+)'
pattern=re.compile(pattern_text)
match=pattern.match(ingredientslist)
match.groups()
Любые предложения приветствуются!