Соскребание HTML с помощью HTML Agility Pack - PullRequest
0 голосов
/ 01 декабря 2011

Может кто-нибудь сказать мне лучший способ получить содержимое, используя HTMLAgilityPack, который я упоминаю ниже из HTML.

В предоставленном HTML мне нужно очистить value идентификатора "img" и установитьзначения 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.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Выбрав, где вы остановились в приведенном выше примере кода, вы можете просто получить значения, подобные этому

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».

А затем просто добавьте URL-адрес dest и отправьте запрос на получение, как вы это сделали, чтобы получить исходный HTML-код.

0 голосов
/ 01 декабря 2011

Я бы не использовал Html Agility Pack для этого, потому что я не знаю, как заставить его вернуться на исходный веб-сайт. Вместо этого я бы использовал WatiN . WatiN создан для управления браузером в целях тестирования, но я считаю его чрезвычайно полезным, когда мне приходится чистить сайты, которые находятся вне моего контроля (например, Facebook или Wal-Mart). Недостатком является то, что управляет реальным окном браузера, поэтому вы не скрываете его от пользователя. Плюсом является то, что вы можете легко имитировать щелчки мышью и вводить текстовые поля.

...