Получить все изображения с доски с веб-адреса Pinterest
Этот вопрос звучит легко, но он не так прост, как кажется.
Краткое описание того, что не так
Например, используйте эту доску;http://pinterest.com/dodo/web-designui-and-mobile/
Изучение HTML для самой доски (внутриdiv
с классомGridItems
) в верхней части страницы выдает:
<div class="variableHeightLayout padItems GridItems Module centeredWithinWrapper" style="..">
<!-- First div with a displayed board image -->
<div class="item" style="top: 0px; left: 0px; visibility: visible;">..</div>
...
<!-- Last div with a displayed board image -->
<div class="item" style="top: 3343px; left: 1000px; visibility: visible;">..</div>
</div>
Тем не менее, в нижней части страницы, после активации бесконечной прокрутки пару раз, мы получаем это как HTML:
<div class="variableHeightLayout padItems GridItems Module centeredWithinWrapper" style="..">
<!-- First div with a displayed board image -->
<div class="item" style="top: 12431px; left: 750px; visibility: visible;">..</div>
...
<!-- Last div with a displayed board image -->
<div class="item" style="top: 19944px; left: 750px; visibility: visible;">..</div>
</div>
Как вы можете видеть, некоторые контейнеры для изображений выше на странице исчезли, и не все контейнеры для изображений загружаются при первой загрузке страницы.
Что я хочу сделать
Я хочу иметь возможность создавать сценарий C # (или любой другой язык на стороне сервера), который может загружать полный HTML-код страницы (то есть извлекать каждое изображение на странице), и затем изображения будут загружаться с их URL-адресов. Загрузка веб-страницы и использование соответствующего XPath просты, но реальная проблема заключается в загрузке полного HTML-кода для каждого изображения.
Есть ли способ, которым я могу эмулировать прокрутку вниз страницы, или есть еще более простой способ, которым я могу получить каждое изображение? Я предполагаю, что Pinterest использует AJAX для изменения HTML, есть ли способ, которым я могу программно вызвать события, чтобы получить весь HTML? Заранее благодарю за предложения и решения, а также за то, что даже прочитали этот очень длинный вопрос, если у вас его нет!
Псевдокод
using System;
using System.Net;
using HtmlAgilityPack;
private void Main() {
string pinterestURL = "http://www.pinterest.com/...";
string XPath = ".../img";
HtmlDocument doc = new HtmlDocument();
// Currently only downloads the first 25 images.
doc.Load(strPinterestUrl);
foreach(HtmlNode link in doc.DocumentElement.SelectNodes(strXPath))
{
image_links[] = link["src"];
// Use image links
}
}