Kann mir jemand sagen, der beste Weg, um den Inhalt mit HTMLAgilityPack zu bekommen, die ich unten aus dem HTML erwähnen.
Im HTML-Code muss ich den value
der ID "img" abkratzen und die Werte für x
und y
, damit sie in einer anderen Funktion verwendet werden können.
Das relevante HTML ist
<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" />
Diese Werte werden an die Funktion in dem unten angezeigten Javascript gesendet
submitClick(document.getElementById("img").getAttribute("value"),
document.getElementById("x").getAttribute("value"),
document.getElementById("y").getAttribute("value"),
'tiled' );
Kann mir ein Körper helfen, indem ich sage, wie ich weitermachen soll ...
Ich habe den folgenden Code geschrieben, der mir die HTML-Daten für die Seite holt
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "GET";
using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(new StringReader(result));
HtmlNode root = doc.DocumentNode;
Nun, da ich die Wurzel habe, wie soll ich nach den Parametern suchen und sie dann mit GET senden.
Wenn Sie oben in Ihrem Beispielcode weitermachen, können Sie die Werte einfach so übernehmen
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");
Wo das erste Beispiel oben im Grunde sagt, finde den ersten Knoten vom Typ "input", der das Attribut "id" hat, das gleich "img" ist und mir den Wert seines Attributs "value" liefert.
Und dann fügen Sie einfach an die Ziel-URL an und senden Sie die Get-Anfrage, wie Sie es getan haben, um den ursprünglichen HTML-Code zu erhalten.
Ich würde das Html Agility Pack nicht dafür verwenden, weil ich nicht weiß, wie ich es auf die ursprüngliche Website zurückführen kann. Stattdessen würde ich WatiN verwenden . WatiN wurde entwickelt, um einen Browser zu Testzwecken zu betreiben, aber ich fand es sehr nützlich, wenn ich Websites, die außerhalb meiner Kontrolle liegen (wie Facebook oder Wal-Mart), scratzen muss. Nachteil ist , dass es ein tatsächliches Browser - Fenster fährt , so ist es nicht etwas , das man von einem Benutzer verbergen. Upside ist, dass Sie Mausklicks leicht simulieren und Feldtexteinträge bilden können.