HtmlAgilityPack.HtmlDocument Cookies

cookies dom html-agility-pack javascript

Pregunta

Esto se refiere a las cookies establecidas dentro de un script (tal vez dentro de una etiqueta de script).

System.Windows.Forms.HtmlDocument ejecuta esos scripts y el conjunto de cookies (como document.cookie=etc... ) se puede recuperar a través de su propiedad Cookies .

Asumo que HtmlAgilityPack.HtmlDocument no hace esto (ejecución). Me pregunto si hay una manera fácil de emular las capacidades de System.Windows.Forms.HtmlDocument (la parte de cookies).

¿Nadie?

Respuesta popular

Cuando necesito usar Cookies y HtmlAgilityPack juntos, o simplemente crear solicitudes personalizadas (por ejemplo, establecer la propiedad User-Agent , etc.), esto es lo que hago:

  • Cree una clase que encapsule la solicitud / respuesta. Llamemos a esta clase WebQuery
  • Tener una propiedad privada CookieCollection (en su caso pública ) dentro de esa clase
  • Crear un método dentro de la clase que hace manualmente la solicitud. La firma podría ser:

...

public HtmlAgilityPack.HtmlDocument GetSource(string url);

¿Qué necesitamos hacer dentro de este método?

Bueno, utilizando HttpWebRequest y HttpWebResponse , genere la solicitud http manualmente (hay varios ejemplos de cómo hacer esto en Internet), cree una instancia de una clase HtmlDocument usando el constructor que recibe una secuencia.

¿Qué corriente tenemos que usar? Bueno, el devuelto por:

httpResponse.GetResponseStream();

Si usa HttpWebRequest para realizar la consulta, puede configurar fácilmente la propiedad CookieContainer de la misma que declaró antes de cada vez que acceda a una nueva página, y de esa manera todas las cookies establecidas por los sitios a los que accede se almacenarán correctamente en la variable CookieContainer Usted declaró en su clase de WebQuery , considerando que está usando solo una instancia de la clase de WebQuery .

Espero que encuentre útil esta explicación. Tenga en cuenta que al usar esto, puede hacer lo que quiera, sin importar si HtmlAgilityPack lo admite o no.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué