有人可以告诉我使用HTMLAgilityPack获取内容的最佳方法,我在下面提到了html。
在提供的HTML中,我需要抓取ID“img”的value
并设置x
和y
的值,以便在其他函数中使用它们。
相关的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发送它们。
答案 0 :(得分: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");
上面的第一个例子基本上是说找到“input”类型的第一个节点,其“id”属性等于“img”,并得到它的“value”属性的值。
然后只需附加到目标网址并发送获取请求,就像获取初始HTML一样。
答案 1 :(得分:0)
我不会使用Html Agility Pack,因为我不知道如何将它反馈给原始网站。相反,我会使用WatiN。 WatiN是为了驱动浏览器进行测试而设计的,但是当我不得不刮掉我无法控制的网站(例如Facebook或沃尔玛)时,我发现它非常有用。缺点是它是驱动一个实际的浏览器窗口,所以它不是你隐藏用户的东西。好处是,您可以轻松模拟鼠标点击并形成字段文本条目。