Я пытаюсь извлечь заголовки ссылок между двумя выделенными тегами на HTML-странице с помощью Python / Beautiful Soup.
HTML-фрагмент того, что я пытаюсь извлечь, выглядит следующим образом:
<B>Heading Title 1:</B> <a href="link1">Title1</a>
<a href="link2">Title2</a>
<B>Heading Title 2:</B> <a href="link3">Title3</a>
<a href="link4">Title4</a>
<a href="link5">Title5</a>
...
Я специально пытаюсь объединить Title1 и Title2 (разделенные разделителем) с одной записью в объекте, подобном списку, аналогично для Title 3, Title 4 и Title 5 и так далее. (Одна проблема, которую я предвижу, заключается в том, что количество заголовков не устанавливается одинаковым для каждого заголовка заголовка.)
Я пробовал разные подходы, в том числе:
import requests, bs4, csv
res = requests.get('WEBSITE.html')
soup = BeautifulSoup(res.text, 'html.parser')
soupy4 = soup.select('a')
with open('output.csv', 'w') as f:
writer = csv.writer(f, delimiter=',', lineterminator='\n')
for line in soupy4:
if 'common_element_link' in line['href']:
categories.append(line.next_element)
writer.writerow([categories])
Однако, хотя это записывает все заголовки в файл, он делает это, непосредственно добавляя каждый дополнительный заголовок следующим образом:
['Title1']
['Title1', 'Title2']
['Title1', 'Title2', 'Title3']
['Title1', 'Title2', 'Title3', 'Title4']
...
В идеале я хочу, чтобы этот код выполнял следующие действия:
['Title1', 'Title2']
['Title3', 'Title4', 'Title5']
...
Я очень новичок в том, что касается списков Python и программирования в целом, и я не знаю, как действовать дальше. Буду признателен за любые отзывы по этому поводу.
Спасибо!