Ce qui devrait être une extraction assez simple regex me confond. Impossible de trouver une question similaire sur SO, si heureux d'être pointé vers un si elle existe. Étant donné le code HTML suivant:Regex correspondant éléments après un en-tête en HTML
<h1 class="title">Title One</h1><p><a href="#">40.5</a><a href="#">31.3</a></p>
<h1 class="title alternate">Title Two</h1><p><a href="#">12.1</a><a href="#">82.0</a></p>
(au sein d'un document plus volumineux - les extraits seront très probablement courir à travers plusieurs lignes)
Comment puis-je construire une expression régulière qui trouve le texte dans les balises A, dans le premier P suivant un H1? L'expression rationnelle ira dans une boucle, telle que je peux passer dans l'en-tête, afin de récupérer les éléments qui suivent.
<a[^>]*>([0-9.]+?)</a>
<a[^>]*>([0-9.]+?)</a>
évidemment correspond à tous les éléments d'une étiquette (et devrait être bien comme une balise ne peut être suivie), mais je ne peux pas les attacher à un H1.
.+Title One.+<a[^>]*>([0-9.]+?)</a></p>
échoue.
Je l'avais essayé d'utiliser comme regard derrière ceci:
(?<=Title One.+)<a[^>]*>([0-9.]+?)</a></p>
et quelques variations, mais il est possible que pour les matches de largeur fixe (qui ne sera pas le cas ici).
Pour le contexte, cela va utiliser le moteur de regex de Python. Je sais regex est pas nécessairement la meilleure solution pour cela, donc d'autres suggestions en utilisant DOM ou quelque chose d'autre aussi reçu avec gratitude :)
Mise à jour
Pour clarifier de ce qui précède, je voudrais retourner les éléments suivants:
{"Title One": ["40.5", "31.3"], "Title Two": ["12.1", "82.0"]}
(pas que je besoin d'aide pour composer le dictionnaire, mais il ne montre comment je besoin des valeurs à être en rapport avec le titre).
Jusqu'à présent, BeautifulSoup ressemble à la meilleure photo. LXML travaillera également probablement le code source HTML est pas vraiment tag soupe - il est assez bien structuré, au moins dans les endroits que je suis intéressé par
Est-ce que cela fonctionnera dans le code Serveur ou dans le javascript dans le document? –
Ceci est pour un script python autonome, pas réellement basé sur le Web. HTML est juste les données source. – majelbstoat
Avez-vous le contrôle sur le HTML créé, pouvez-vous lui faire confiance pour suivre un format commun? –