HtmlAgilityPack.HtmlDocument Cookies

cookies dom html-agility-pack javascript

Frage

Dies betrifft Cookies, die in einem Skript (möglicherweise innerhalb eines Skript-Tags) gesetzt sind.

System.Windows.Forms.HtmlDocument führt diese Skripte aus und die gesetzten Cookies (wie document.cookie=etc... ) können über die Cookies- Eigenschaft abgerufen werden.

Ich nehme an, dass HtmlAgilityPack.HtmlDocument dies nicht tut (Ausführung). Ich frage mich, ob es eine einfache Möglichkeit gibt, die System.Windows.Forms.HtmlDocument Funktionen (der Teil Cookies) zu emulieren.

Jemand?

Beliebte Antwort

Wenn ich Cookies und HtmlAgilityPack zusammen verwenden oder nur benutzerdefinierte Anforderungen erstellen muss (z. B. die User-Agent Eigenschaft usw. festlegen), mache ich Folgendes:

  • Erstellen Sie eine Klasse, die die Anfrage / Antwort kapselt. Nennen wir diese Klasse WebQuery
  • Habe eine private CookieCollection-Eigenschaft (in deinem Fall öffentlich ) in dieser Klasse
  • Erstellen Sie eine Methode in der Klasse, die die Anforderung manuell ausführt. Die Signatur könnte sein:

...

public HtmlAgilityPack.HtmlDocument GetSource(string url);

Was müssen wir in dieser Methode tun?

Nun, mit HttpWebRequest und HttpWebResponse , generieren Sie die HTTP-Anfrage manuell (es gibt mehrere Beispiele, wie dies im Internet tun), erstellen Sie eine Instanz einer HtmlDocument Klasse mit dem Konstruktor, der einen Stream empfängt.

Welchen Strom müssen wir verwenden? Nun, der eine kam zurück:

httpResponse.GetResponseStream();

Wenn Sie HttpWebRequest zum Ausführen der Abfrage verwenden, können Sie die CookieContainer Eigenschaft der deklarierten Variablen vor jedem Zugriff auf eine neue Seite einfach festlegen. CookieContainer diese Weise werden alle von den Websites, auf die Sie zugreifen, gesetzten Cookies ordnungsgemäß in der CookieContainer Variablen gespeichert Sie haben in Ihrer WebQuery Klasse WebQuery , dass Sie nur eine Instanz der WebQuery Klasse verwenden.

Ich hoffe, Sie finden diese Erklärung nützlich. Nehmen Sie an, dass Sie mit dieser Funktion tun können, was Sie wollen, unabhängig davon, ob HtmlAgilityPack dies unterstützt oder nicht.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum