Come analizzare questo pezzo di HTML?

c# html html-agility-pack

Domanda

Buongiorno! sto usando c # (framework 3.5sp1) e voglio analizzare la seguente parte di html tramite regex:

<h1>My caption</h1>
<p>Here will be some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

ho bisogno di seguenti risultati:

  • gruppo 1: contenuto di h1
  • gruppo 2: contenuto del testo h1-seguente
  • gruppo 3-n: contenuto di sottotitoli + testo

quello che ho atm:

<h1>My caption</h1>
<p>Here will be some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

<hr class="cs" />
<h2 id="x">CaptionX</h2>
<p>Some text</p>

questo mi darà ogni sottospecie + contenuto (ad esempio 1, 3, ...) a causa del trailing <hr/> . per analizzare l'h1-didascalia ho un altro pattern ( <h1.*?>(.*?)</h1> ), che mi dà solo la didascalia ma non il contenuto - sto bene con quella atm.

qualcuno ha un suggerimento / soluzione per me o altre logiche alternative (ad esempio, analizzare l'html tramite lettore e assegnarlo in questo modo?)?

modificare:
come alcuni hanno portato in HTMLAgilityPack , ero curioso di questo bel strumento. ho ottenuto il contenuto del <h1> .
ma ... Myproblem sta analizzando il resto. questo è causato da: i tag per il contenuto possono variare - da <p> a <div> e <ul> ... atm questo sembra più o meno iterato sull'intero documento e il tag di analisi per il tag ...? qualche suggerimento?

Risposta accettata

Avrai davvero bisogno di un parser HTML per questo


Risposta popolare

Non usare regex per analizzare HTML. Prendi in considerazione l'utilizzo di HTML Agility Pack .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché