HtmlAgilityPack.Html Cookie di documento

cookies dom html-agility-pack javascript

Domanda

Questo riguarda i cookie impostati all'interno di uno script (magari all'interno di un tag script).

System.Windows.Forms.HtmlDocument esegue quegli script e il set di cookie (come document.cookie=etc... ) può essere recuperato tramite la sua proprietà Cookies .

Presumo che HtmlAgilityPack.HtmlDocument non faccia questo (esecuzione). Mi chiedo se esiste un modo semplice per emulare le funzionalità System.Windows.Forms.HtmlDocument (la parte relativa ai cookie).

Chiunque?

Risposta popolare

Quando devo utilizzare cookie e HtmlAgilityPack insieme, o semplicemente creare richieste personalizzate (ad esempio, impostare la proprietà User-Agent , ecc.), Ecco cosa faccio:

  • Crea una classe che incapsula la richiesta / risposta. Chiamiamo questa classe WebQuery
  • Avere una proprietà privata di CookieCollection (nel tuo caso pubblico ) all'interno di quella classe
  • Creare un metodo all'interno della classe che esegue manualmente la richiesta. La firma potrebbe essere:

...

public HtmlAgilityPack.HtmlDocument GetSource(string url);

Cosa dobbiamo fare all'interno di questo metodo?

Bene, usando HttpWebRequest e HttpWebResponse , generate manualmente la richiesta http (ci sono diversi esempi su come farlo su Internet), create un'istanza di una classe HtmlDocument usando il costruttore che riceve uno stream.

Quale flusso dobbiamo usare? Bene, quello restituito da:

httpResponse.GetResponseStream();

Se si utilizza HttpWebRequest per effettuare la query, è possibile impostare facilmente la proprietà CookieContainer della variabile dichiarata prima di ogni accesso a una nuova pagina e in questo modo tutti i cookie impostati dai siti a cui si accede verranno archiviati correttamente nella variabile CookieContainer hai dichiarato nella tua classe WebQuery , tenendo conto del fatto che stai usando una sola istanza della classe WebQuery .

Spero che trovi utile questa spiegazione. Considera che, usando questo, puoi fare quello che vuoi, non importa se HtmlAgilityPack lo supporta o meno.



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é