HtmlAgilityPack.HtmlDocument Cookies

cookies dom html-agility-pack javascript

Question

Cela concerne les cookies définis dans un script (éventuellement dans une balise de script).

System.Windows.Forms.HtmlDocument exécute ces scripts et les cookies définis (comme document.cookie=etc... ) peuvent être récupérés via sa propriété Cookies .

Je suppose que HtmlAgilityPack.HtmlDocument ne fait pas cela (exécution). Je me demande s’il existe un moyen simple d’émuler les fonctionnalités System.Windows.Forms.HtmlDocument (la partie cookies).

N'importe qui?

Réponse populaire

Lorsque je dois utiliser simultanément les cookies et HtmlAgilityPack , ou tout simplement créer des demandes personnalisées (par exemple, définir la propriété User-Agent , etc.), voici ce que je fais:

  • Créez une classe qui encapsule la demande / réponse. Appelons cette classe WebQuery
  • Avoir une propriété privée CookieCollection (dans votre cas publique ) à l'intérieur de cette classe
  • Créez une méthode à l'intérieur de la classe qui effectue manuellement la demande. La signature pourrait être:

...

public HtmlAgilityPack.HtmlDocument GetSource(string url);

Que devons-nous faire dans cette méthode?

Eh bien, en utilisant HttpWebRequest et HttpWebResponse , générez la demande http manuellement (il existe plusieurs exemples de la HtmlDocument à suivre sur Internet), créez une instance d'une classe HtmlDocument à l'aide du constructeur qui reçoit un flux.

Quel flux devons-nous utiliser? Eh bien, celui retourné par:

httpResponse.GetResponseStream();

Si vous utilisez HttpWebRequest pour créer la requête, vous pouvez facilement définir CookieContainer propriété CookieContainer sur la variable que vous avez déclarée avant chaque accès à une nouvelle page. Ainsi, tous les cookies définis par les sites CookieContainer vous accédez seront correctement stockés dans la variable CookieContainer vous avez déclaré dans votre classe WebQuery , compte WebQuery que vous n'utilisez qu'une seule instance de la classe WebQuery .

J'espère que vous trouverez cette explication utile. Tenez compte du fait qu'en utilisant cela, vous pouvez faire ce que vous voulez, peu importe si HtmlAgilityPack le supporte ou non.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi