HTMLアジリティパックによるHTMLスクレイピング

ajax c# html-agility-pack web-scraping

質問

HTMLAgilityPackを使ってコンテンツを取得する最善の方法を教えてもらえますか?

提供されたHTMLでは、私はID「img」のvalueを掻き取り、別の関数で使用するためにxy値を設定する必要があります。

関連するHTMLは

<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" />

これらの値は、以下に表示されるjavascriptの関数に送られています

submitClick(document.getElementById("img").getAttribute("value"), 
              document.getElementById("x").getAttribute("value"), 
              document.getElementById("y").getAttribute("value"), 
              'tiled'  );

私がどのように進めるべきかを伝えることで、体が私を助けることができますか?

私はページのhtmlデータを取得する次のコードを書いています

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;

今私はどのように私はパラメータを検索し、GETでそれらを送信する必要がありますルートを持っている。

受け入れられた回答

上のサンプルコードで中断した箇所をピックアップすると、このような値を取得できます

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");

上記の最初の例では、基本的に、 "img"に等しい "id"属性を持つ型 "input"の最初のノードを見つけ、 "value"属性の値を取得しています。

そして、最初のHTMLを取得するのと同じように、dest URLに追加してGet Requestを送信します。


人気のある回答

元のWebサイトにフィードバックする方法がわからないので、このためにはHTMLのAgility Packを使用しません。代わりに、 WatiNを使用します 。 WatiNはテスト目的でブラウザを動かすために作られていますが、私がコントロールできないウェブサイト(FacebookやWal-Martなど)を擦ってしまうと非常に便利です。欠点は、それ実際のブラウザウィンドウを駆動しているので、ユーザーから隠すものではないということです。マウスのクリックやフィールドテキストの入力を簡単にシミュレートできます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ