2012-02-11 2 views
0

Я пытаюсь данными скоблить из этого URL: http://icecat.biz/en/p/Coby/DP102/desc.htmКак скоблить данные

Я хочу, чтобы скоблить, что спецификаций таблицы из этой ссылки.

Но я проверил исходный код URL, что таблица spec не отображается, потому что я думаю, что таблица загружается с использованием Ajax.

Как я могу получить эту таблицу. Что нужно сделать?

Я использовал следующий код:

string Strproducturl = "http://icecat.biz/en/p/Coby/DP102/desc.htm"; 
System.Net.ServicePointManager.Expect100Continue = false; 
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(Strproducturl); 
httpWebRequest.KeepAlive = true; 
ASCIIEncoding encoding = new ASCIIEncoding(); 

HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
Stream responseStream = httpWebResponse.GetResponseStream(); 
StreamReader streamReader = new StreamReader(responseStream); 
string response = streamReader.ReadToEnd(); 
+0

Моей первую догадки здесь будете что вам нужно сделать вызовы ajax, вы можете получить json назад, что было бы проще, чем веб-скребок. – IanNorton

+0

. Ajax-вызов для таблиц данных выглядит как URL: http://icecat.biz/index.cgi?ajax = productPage; product_id = 1091664; language = en; request = feature – IanNorton

+0

, но все это процесс автоматизирован. Я дал вы, который ссылается только на пример. Я также проверил ответ, но тот источник таблицы спецификаций входит в этот ответ. – user1203653

ответ

0

Я хотел бы предложить, что вы используете библиотеку как HtmlAgilityPack выбирать различные элементы из HTML документа.

Я быстро просмотрел ссылку и заметил, что данные фактически загружаются с использованием дополнительного запроса ajax. Вы можете использовать следующий URL-адрес, чтобы получить данные АЯКС

http://icecat.biz/index.cgi?ajax=productPage;product_id=1091664;language=en;request=feature

Использование HtmlAgilityPack для анализа этих данных.

1

Как упоминал IanNorton, вам нужно сделать свой запрос на URL-адрес, который Icecat использует для загрузки спецификаций с использованием AJAX. Для примера ссылки вы предоставили, детали данные URL вам нужно запрос будет:

http://icecat.biz/index.cgi?ajax=productPage;product_id=1091664;language=en;request=feature

Вы можете работать свой путь через ответ HTML, чтобы получить подробную информацию спецификации вам требуется.

Вы упомянули в своем комментарии, что процесс скребков автоматизирован. URL-адрес спецификаций находится в базовом формате, вам просто нужен идентификатор продукта. Однако, если у вас нет идентификаторов, всего несколько URL-адресов, например, пример в исходном вопросе, вам нужно будет получить идентификатор продукта из вашего URL-адреса.

Например, в примере URL вы дали перенаправляет на другой URL:

http://icecat.biz/p/coby/dp102/digital-photo-frames-0716829961025-dp-102-digital-photo-frame-1091664.html

Этот URL содержит идентификатор, в самом конце.

Вы могли бы сделать HttpWebRequest к исходному URL, остановитесь, прежде чем он делает редирект и поймать перенаправление URL:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://icecat.biz/en/p/Coby/DP102/desc.htm"); 
request.AllowAutoRedirect = false; 
request.KeepAlive = true; 

HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if(response.StatusCode == HttpStatusCode.Redirect){ 

    string redirectUrl = response.GetResponseHeader("Location"); 

} 

После того, как вы получили переменную redirectUrl, вы можете использовать Regex, чтобы получить идентификатор затем выполните еще один HttpWebRequest с подробным URL-адресом спецификации.

+0

строка redirectUrl = response.GetResponseHeader ("Местоположение"); Местоположение означает, что именно? Я имею в виду, что мне нужно туда войти? Не могли бы вы помочь? – user1203653

+0

Значение «redirectUrl» будет URL-адресом, на который перенаправляется URL вашего примера, тот, который содержит идентификатор продукта: http://icecat.biz/p/coby/dp102/digital-photo-frames-0716829961025-dp -102-digital-photo-frame-1091664.html Помогает ли это? –

Смежные вопросы