Нужна помощь с Xpath

miir1981

Client
Регистрация
13.12.2019
Сообщения
102
Благодарностей
19
Баллы
18
Прошу помощи с правильным подбором Xpath для парсинга картинок с сайтов с установленным плагином "ленивой загрузки" - lazyloaded. Перебрал все варианты, но при парсинге и автоматической публикации в Вордпресс картинок или нет, или
100378
 

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Прошу помощи с правильным подбором Xpath для парсинга картинок с сайтов с установленным плагином "ленивой загрузки" - lazyloaded. Перебрал все варианты, но при парсинге и автоматической публикации в Вордпресс картинок или нет, или Посмотреть вложение 100378
Ссылку пришлите
 

miir1981

Client
Регистрация
13.12.2019
Сообщения
102
Благодарностей
19
Баллы
18
пример сайта
 

miir1981

Client
Регистрация
13.12.2019
Сообщения
102
Благодарностей
19
Баллы
18
  • Спасибо
Реакции: Sho

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
546
Благодарностей
1 125
Баллы
93
Привет. Вот полное решение парсинга ссылок с картинками.
Надеюсь заслужить "спасибо" ;-).

Парсинг в список всех ссылок с картинками:
/* xPath:
* .//a[normalize-space()='Load More'] - кнопка к след. странице
*
* .//div[contains(@class,'frame-inner')]/child::img[contains(@srcset,'http')] - получить список всех картинок
* нужно получить srcset, там все размеры картинок
*/

string link = "https://www.beautytester.it";
Tab tab = instance.ActiveTab;

tab.Navigate(link); // зайти на страницу
tab.WaitDownloading(); // ждать загрузки

int check = 0; // счетчик
do
{
    HtmlElement button = tab.FindElementByXPath(".//a[normalize-space()='Load More']", 0); // найти кнопку
    button.ScrollIntoView();
    button.Click();
    tab.WaitDownloading();
} while (!tab.FindElementByXPath(".//a[normalize-space()='Load More']", 0).IsNull && ++check < 15); // 15 страниц

HtmlElementCollection collection = tab.FindElementsByXPath(".//div[contains(@class,'frame-inner')]/child::img[contains(@srcset,'http')]");
List<string> resLinks = collection.Select(el => el.GetAttribute("srcset")).ToList();

project.Lists["listZM"].Clear(); // очистить список
project.Lists["listZM"].AddRange(resLinks); // добавить результат в список

foreach (string s in resLinks) project.SendInfoToLog(s); // вывод в лог
Результат в логе и в списке шаблона.

Приложил ↓ шаблон с полным решением
 

Вложения

Последнее редактирование:

miir1981

Client
Регистрация
13.12.2019
Сообщения
102
Благодарностей
19
Баллы
18
  • Спасибо
Реакции: Sho

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
546
Благодарностей
1 125
Баллы
93
Все так же как и выше вам показал. Прокрутите в самый низ и потом собираешь картинки.

xPath на все картинки: //div[contains(@class,'wp-block-image')]//child::img[contains(@srcset,'http')] нужно получить атрибут: srcset
 
Последнее редактирование:
  • Спасибо
Реакции: Sho

viol2021

Client
Регистрация
12.01.2021
Сообщения
482
Благодарностей
180
Баллы
43
Все так же как и выше вам показал. Прокрутите в самый низ и потом собираешь картинки.

xPath на все картинки: //div[contains(@class,'wp-block-image')]//child::img[contains(@srcset,'http')] нужно получить атрибут: srcset
C#:
//*[@class= 'wp-block-image']//figure//img
 

djaga

Administrator
Команда форума
Регистрация
26.04.2020
Сообщения
546
Благодарностей
1 125
Баллы
93
C#:
//*[@class= 'wp-block-image']//figure//img
Да, ваш тоже верный, я не спорю.))
В моём добавлена проверка, на содержание ссылок в srcset.
Так как в примере выше, были варианты картинки без ссылок на полноразмерный формат.
 
  • Спасибо
Реакции: Sho и che100

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)