Usa HTML Agility Pack per estrarre il contenuto dinamico

c# html-agility-pack

Domanda

Diciamo che ho una lista di 10 fonti di notizie che mi piace importare nel mio database locale. Devo aprire ciascuna di queste pagine di notizie esterne, estrarre il contenuto principale e salvarlo. La struttura html in tutte queste pagine è diversa. Alcuni usano div, mentre altri usano i tag degli articoli.

So che posso utilizzare l'oggetto HttpWebRequest per aprire la pagina e utilizzare HtmlAgilityPack per caricare il documento [HTML].

HttpWebRequest oReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse resp = (HttpWebResponse)oReq.GetResponse();
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(resp.GetResponseStream());

Tuttavia, non so come posso indirizzare l'elemento principale senza conoscere il tipo.

Quello che sto cercando di fare è anche possibile?

Risposta popolare

HTML Agility Pack è ESTREMAMENTE utile, ma il codice che lo utilizza in genere deve essere personalizzato per la struttura del sito.

Puoi provare ad essere generico e adattivo, ma anche i "Big Boy" come Evernote devono avere opzioni di ritaglio diverse per i diversi layout del sito.

La prima cosa che guarderei: Se sono notizie, dovresti usare i loro feed RSS? (Non solo tecnicamente, ma legalmente. Consulta le sezioni sui termini di servizio dei siti.)

Se devi analizzare il loro sito, suggerirei di creare un'interfaccia e una classe separata per ogni sito che implementa l'interfaccia. Tweak ogni classe per abbinare la struttura del rispettivo sito.



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é