2013-08-28 2 views
-5

У меня проблема с определенным сайтом - мне предоставляется список идентификационных номеров продуктов (около 2000), и моя задача - вытащить данные с сайта производителя. Я уже пытался создать URL-адрес страниц продукта, но есть некоторые неизвестные переменные, которые я не могу поставить для получения результатов. Однако есть поле поиска, поэтому я могу использовать url вот так: http://www.hansgrohe.de/suche.htm?searchtext=10117000&searchSubmit=Suchen - проблема в том, что данная информация о отображаемой странице (возможно, java-скрипт), а затем перенаправляет прямо на желаемую страницу - тот, который мне нужно извлечь данные.Получение исходного кода перенаправленного http-сайта с помощью C# webclient

есть ли способ отслеживания этого перенаправления?

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

public static string Download(string uri) 
{ 

    WebClient client = new WebClient(); 
    client.Encoding = Encoding.UTF8; 
    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 

    string s = client.DownloadString(uri); 
    return s; 

} 

Также предлагается ответ не ПОЛЕЗНЫЕ в этом случае, так как перенаправление не приходит с запросом HTTP - страница перенаправляется через несколько секунд загрузки http://www.hansgrohe.de/suche.htm?searchtext=10117000&searchSubmit=Suchen URL-адрес

Я просто нашел решение, и так как я» м нового, и я должен ждать несколько часов, чтобы ответить на мой вопрос, он будет в конечном итоге там:

Я надеюсь, что другие пользователи найдут ПОЛЕЗНЫЕ: {псевдокод}

webBrowser1.Navigate('url'); 

while (webBrowser1.Url.AbsoluteUri != 'url') 
{ 
// wait 
} 
String desiredUri = webBrowser1.Url.AbsoluteUri; 

Спасибо за ответы.

+1

Пожалуйста, добавьте ваш код и удалите его, чтобы остановить закрытие. – Kangkan

+7

Это только я, или этот вопрос звучит так: «Я пытаюсь очистить веб-сайт, который оказывает сопротивление, пожалуйста, помогите мне очистить их» - если бы вы были * предназначены для этого, API будет ясным и документированным (и, вероятно, не html) –

+0

в основном да - данная компания снабдила меня кулаком их продуктов, а цены - как их дилер - но им все еще не хватает описания этих - я мог бы провести целую неделю, переписывая его слово за словом из каталога или используя некоторую помощь из научной науки, и сделайте это всего за несколько часов. – jmwierzbicki

ответ

1

Добро пожаловать в прекрасный мир соскабливания страниц. Короткий ответ: «Вы не можете этого сделать». Во всяком случае, не в общем случае, и, конечно же, не с WebClient. Проблема заключается в том, что некоторые Javascript выполняет перенаправление. И поскольку все WebClient действительно загружает страницу, она даже не загружает Javascript. Гораздо меньше разобрать и выполнить его.

Вы можете сделать возможно, создав программу, которая использует класс WebBrowser. Вы можете загрузить его. Он должен выполнить перенаправление, а затем вы можете проверить результат, который должен быть страницей, которую вы искали. Я на самом деле этого не делал, но это кажется возможным.

Другой вариант - запустить средства разработки вашего веб-браузера (например, инструменты разработчика F12 от IE) и посмотреть, что происходит. Затем вы можете проверить исполняемый Javascript, а также модифицированный DOM и посмотреть, где происходит перенаправление.

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

+0

Джим - нашел немного, что не имело смысла для меня; не стесняйтесь откатываться, если у меня есть неправильный конец того, что вы имели в виду :) – Bridge

+0

@Bridge: Спасибо. Я имел в виду «вечеринку», но я изменил ее, чтобы быть более ясным. –

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