J'essaie d'extraire les titres des liens situés entre deux balises en gras sur une page HTML en utilisant Python/Beautiful Soup.
L'extrait HTML de ce que j'essaie d'extraire est le suivant :
<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>
...
Je cherche spécifiquement à concaténer Title1 et Title2 (séparés par un délimiteur) en une entrée dans un objet de type liste, de même pour Title 3, Title 4 et Title 5, et ainsi de suite. (Un problème que je prévois est que le nombre de titres n'est pas le même pour chaque titre de rubrique).
J'ai essayé plusieurs approches, notamment
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])
Cependant, bien que cette méthode écrive tous les titres dans un fichier, elle le fait en ajoutant directement chaque titre supplémentaire de la manière suivante :
['Title1']
['Title1', 'Title2']
['Title1', 'Title2', 'Title3']
['Title1', 'Title2', 'Title3', 'Title4']
...
Idéalement, je voudrais que ce code fasse ce qui suit :
['Title1', 'Title2']
['Title3', 'Title4', 'Title5']
...
Je suis très novice en ce qui concerne les listes python et la programmation en général et je ne sais pas comment procéder. J'apprécierais tout retour d'information que vous pourriez avoir à ce sujet.
Merci de votre attention !