2013-11-30 5 views
0

У меня есть следующий результат, взятый у Fiddler, во время запроса Ajax Post, который мне нужно проанализировать, чтобы получить ссылки на изображения. Возможно ли это с HtmlAgility, или я должен пойти в Regex?HtmlAgility parsing ajax responce

"\r\n\r\n\u003cdiv class=\"media-window\" style=\"position: fixed; left: 25px; top: 25px; right: 25px;\r\n display: none; bottom: 10px;\"\u003e\r\n \u003cspan class=\"layer-close\"\u003e\u003ca href=\"javascript:void(0);\" class=\"close\"\u003eClose\u003c/a\u003e\u003c/span\u003e\r\n \u003cdiv class=\"stop\"\u003e\r\n \u003c/div\u003e\r\n \r\n \u003cdiv class=\"thumbs-wrapper\"\u003e\r\n  \u003cdiv class=\"media-thumbs\"\u003e\r\n   \u003cdiv class=\"media-pager previous-set\"\u003e\r\n    \u003cspan\u003e<< Previous\u003c/span\u003e\u003c/div\u003e\r\n   \u003cul class=\"thumb\"\u003e\r\n    \r\n    \u003cli\u003e\r\n     \r\n     \u003ca href=\"javascript:void(0);\" rel=\"http://website/image1.jpg\"\u003e\r\n      \u003cimg src=\"ttp://website/image1.jpg\" alt=\"0\" /\u003e\r\n     \u003c/a\u003e\u003c/li\u003e\r\n    \r\n    \u003cli\u003e\r\n     \r\n     \u003ca href=\"javascript:void(0);\" rel=\"ttp://website/image1.jpg\"\u003e\r\n      \u003cimg src=\"ttp://website/image1.jpg\" alt=\"1\" /\u003e\r\n     \u003c/a\u003e\u003c/li\u003e\r\n    \r\n   \u003c/ul\u003e\r\n   \u003cdiv class=\"media-pager next-set\"\u003e\r\n    \u003cspan\u003eNext >>\u003c/span\u003e\u003c/div\u003e\r\n   \u003cdiv class=\"stop\"\u003e\r\n   \u003c/div\u003e\r\n  \u003c/div\u003e\r\n \u003c/div\u003e\r\n \r\n \u003cdiv class=\"main-image\"\r\n  style=\"overflow: hidden; position: relative;\"\u003e\r\n  \u003cul\u003e\r\n   \u003cli class=\"media-pager previous-img\"\u003e\u003cspan\u003e<< Previous photo\u003c/span\u003e\u003c/li\u003e\r\n   \u003cli class=\"media-pager next-img\"\u003e\u003cspan\u003eNext photo >>\u003c/span\u003e\u003c/li\u003e\r\n  \u003c/ul\u003e\r\n  \u003cdiv class=\"image-wrapper zoom\"\r\n   style=\"position:relative;display:inline-block;\"\r\n   \u003e\r\n   \r\n   \r\n   \u003cscript type=\"text/javascript\"\u003e\r\n    $(document).ready(function() {\r\n     $(\"ul.thumb li\").each(function() {\r\n      if ($(this).children(\"a\").children(\"img\").attr(\"alt\") == \u00270\u0027) {\r\n" 
+0

Почему бы вам не попробовать этот пакет? – AgentFire

+0

Привет, я сделал это, но так как это плохо структурировано или, по крайней мере, мне нужно как-то декодировать строку, поэтому она станет структурированным кодом hmtl. Я не получаю результатов. – Jim

ответ

1

попробовать что-то вроде этого:

string str = "\r\n\r\n\u003cdiv class=\"media-window\" style=\"position: fixed; left: 25px; top: 25px; right: 25px;\r\n display: none; bottom: 10px;\"\u003e\r\n \u003cspan class=\"layer-close\"\u003e\u003ca href=\"javascript:void(0);\" class=\"close\"\u003eClose\u003c/a\u003e\u003c/span\u003e\r\n \u003cdiv class=\"stop\"\u003e\r\n \u003c/div\u003e\r\n \r\n \u003cdiv class=\"thumbs-wrapper\"\u003e\r\n  \u003cdiv class=\"media-thumbs\"\u003e\r\n   \u003cdiv class=\"media-pager previous-set\"\u003e\r\n    \u003cspan\u003e<< Previous\u003c/span\u003e\u003c/div\u003e\r\n   \u003cul class=\"thumb\"\u003e\r\n    \r\n    \u003cli\u003e\r\n     \r\n     \u003ca href=\"javascript:void(0);\" rel=\"http://website/image1.jpg\"\u003e\r\n      \u003cimg src=\"ttp://website/image1.jpg\" alt=\"0\" /\u003e\r\n     \u003c/a\u003e\u003c/li\u003e\r\n    \r\n    \u003cli\u003e\r\n     \r\n     \u003ca href=\"javascript:void(0);\" rel=\"ttp://website/image1.jpg\"\u003e\r\n      \u003cimg src=\"ttp://website/image1.jpg\" alt=\"1\" /\u003e\r\n     \u003c/a\u003e\u003c/li\u003e\r\n    \r\n   \u003c/ul\u003e\r\n   \u003cdiv class=\"media-pager next-set\"\u003e\r\n    \u003cspan\u003eNext >>\u003c/span\u003e\u003c/div\u003e\r\n   \u003cdiv class=\"stop\"\u003e\r\n   \u003c/div\u003e\r\n  \u003c/div\u003e\r\n \u003c/div\u003e\r\n \r\n \u003cdiv class=\"main-image\"\r\n  style=\"overflow: hidden; position: relative;\"\u003e\r\n  \u003cul\u003e\r\n   \u003cli class=\"media-pager previous-img\"\u003e\u003cspan\u003e<< Previous photo\u003c/span\u003e\u003c/li\u003e\r\n   \u003cli class=\"media-pager next-img\"\u003e\u003cspan\u003eNext photo >>\u003c/span\u003e\u003c/li\u003e\r\n  \u003c/ul\u003e\r\n  \u003cdiv class=\"image-wrapper zoom\"\r\n   style=\"position:relative;display:inline-block;\"\r\n   \u003e\r\n   \r\n   \r\n   \u003cscript type=\"text/javascript\"\u003e\r\n    $(document).ready(function() {\r\n     $(\"ul.thumb li\").each(function() {\r\n      if ($(this).children(\"a\").children(\"img\").attr(\"alt\") == \u00270\u0027) {\r\n"; 
HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(str); 
foreach (var selectNode in doc.DocumentNode.SelectNodes("//img[@src]")) 
{ 
    Console.WriteLine(selectNode.Attributes["src"].Value); 
} 

UPDATE: код я пытался разобрать изображения из google.com:

var url = "http://google.com"; 
HttpClient client = new HttpClient(); 
HttpResponseMessage response = await client.GetAsync(url); 

HtmlDocument doc = new HtmlDocument(); 
doc.Load(await response.Content.ReadAsStreamAsync()); 

foreach (var selectNode in doc.DocumentNode.SelectNodes("//img[@src]")) 
{ 
     Console.WriteLine(selectNode.Attributes["src"].Value); 
} 
+0

Пробовал, но все еще не работает. Я использую следующий код: HttpResponseMessage response = wait client.PostAsync (Url, data, ct); doc.Load (ожидание response.Content.ReadAsStreamAsync()); попробовать { \t Еогеасп (HtmlNode ссылка в doc.DocumentNode.SelectNodes ("// IMG [@src]")) \t { \t \t строка г = link.Attributes [ "SRC"] Value. \t} } – Jim

+0

Вы уверены, что получили правильное сообщение из своего сообщения? Я просто попробовал это с помощью google.com - он работает отлично, поэтому я думаю, что проблема не в синтаксическом анализе html. –

+0

Я сравнил результат Fidler с результатом ответа ... это то же самое ... Далее я попытался разобрать // img [@src] или даже // img, чтобы получить какой-то результат ... без каких-либо успехов до теперь – Jim

0

Ответ прост:

var decodedString = Regex.Unescape(yourString); 

Спасибо все.

0

Да он работает:

var decodedString = Regex.Unescape(yourString); 
+0

Добавьте некоторое объяснение, как этот ответ поможет OP исправить текущую проблему, а также другие с той же проблемой. Спасибо –