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

miir1981

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

viol2021

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

miir1981

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

miir1981

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

viol2021

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

djaga

Client
Регистрация
26.04.2020
Сообщения
505
Благодарностей
1 052
Баллы
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
Сообщения
98
Благодарностей
18
Баллы
8
  • Спасибо
Реакции: Sho

djaga

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

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

viol2021

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

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

djaga

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

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