2011-11-30 42 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或沃尔玛)时。缺点是它驾驶一个实际的浏览器窗口,所以它不是你从用户隐藏的东西。最重要的是,你可以很容易地模拟鼠标点击并形成字段文本条目。