Scrap HTML con HTML Agility Pack

ajax c# html-agility-pack web-scraping

Domanda

Qualcuno può dirmi il modo migliore per ottenere i contenuti utilizzando HTMLAgilityPack che menziono di seguito dall'html.

Nella HTML fornito devo raschiare value dell'ID "img" e impostare i valori di x ed y per poter essere utilizzate in un'altra funzione.

L'HTML pertinente è

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Questi valori vengono inviati alla funzione nel javascript visualizzato di seguito

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Qualcuno può aiutarmi dicendo come dovrei procedere ...

Ho scritto il seguente codice che mi fornisce i dati html per la pagina

<div id="values">
<input type="hidden" id="x" name="x" value='0' />
<input type="hidden" id="y" name="y" value='0' />
<input type="hidden" id="img" name="img" value="86932" />
<input type="hidden" id="source" name = "source" value="center" />

Ora che ho la radice come devo cercare i parametri e poi inviarli tramite GET.

Risposta accettata

Riprendendo da dove avevi interrotto nel tuo codice di esempio sopra, potresti semplicemente prendere i valori come questo

string imgValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"img\"]").GetAttributeValue("value", "0");
string xValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"x\"]").GetAttributeValue("value", "0");
string yValue = doc.DocumentNode.SelectSingleNode("//input[@id = \"y\"]").GetAttributeValue("value", "0");

Dove il primo esempio sopra è fondamentalmente dicendo trova il primo nodo di tipo "input" che ha l'attributo "id" uguale a "img" e prendi il valore del suo attributo "valore".

E poi basta aggiungere l'URL di destinazione e inviare la richiesta di ottenere come hai fatto per ottenere l'HTML iniziale.


Risposta popolare

Non userei l'Html Agility Pack per questo perché non so come farlo tornare al sito web di origine. Invece, userei WatiN . WatiN è progettato per pilotare un browser a scopo di test, ma l'ho trovato estremamente utile quando devo carpire siti web che sono fuori dal mio controllo (come Facebook o Wal-Mart). Il rovescio della medaglia è che sta guidando una finestra del browser reale, quindi non è qualcosa che si nasconde da un utente. Il lato positivo è che puoi simulare facilmente i clic del mouse e inserire voci di testo sul campo.




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é