2011-11-30 38 views
0

有人可以告訴我使用HTMLAgilityPack獲取內容的最佳方法,我在下面從HTML中提到。使用HTML敏捷包進行HTML刮012

在HTML提供我需要刮ID「IMG」的valuexy設置的值對於它們在另一功能中使用。

相關的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" /> 

這些值被髮送給函數在下面

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

顯示JavaScript的一些機構可以幫助我,告訴我應該如何進行?

我已經編寫了下面的代碼,可以獲取頁面的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發送它們。

+0

HTML是固定的? – Kakashi

+0

是的這是固定的 – user671805

回答

2

拿起,你在你的代碼示例不放過上面你可以只抓住這樣

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

如果上面的第一個例子基本上是說找到類型「輸入」具有的第一個節點的值「id」屬性等於「img」,並讓我知道它的「value」屬性的值。

然後,只需追加到目標網址併發送獲取請求就像獲取初始HTML一樣。

+0

嘿非常感謝...但你能告訴我更多的事情...我有這樣的元素

\t \t \t \t \t \t image \t \t \t \t \t
在這我該如何檢測src? – user671805

+0

我在答案中增加了一些解釋,可能有所幫助。但特別是你可以得到像這個字符串的「src」屬性的值imgValue = doc.DocumentNode.SelectSingleNode(「// img [@id = \」captcha_img \「]」)。GetAttributeValue(「src」,「0」 ); –

0

我不會使用Html Agility Pack,因爲我不知道如何使它反饋到原始網站。相反,我會使用WatiN。 WatiN是爲了測試目的而設計的,但是我發現它非常有用,當我不得不刮掉我無法控制的網站(如Facebook或沃爾瑪)時。缺點是它駕駛一個實際的瀏覽器窗口,所以它不是你從用戶隱藏的東西。最重要的是,你可以很容易地模擬鼠標點擊並形成字段文本條目。