Парсинг карточки товара

Warchunn

Client
Регистрация
29.04.2019
Сообщения
7
Благодарностей
0
Баллы
1
Подскажите пожалуйста как спарсить ссылки на доп. изображения товара.
Вот так выходит линк на первое изображение из тамбнейлов (то есть первое вхождение):
C#:
HtmlNode addimg = doc.DocumentNode.SelectSingleNode("//img[contains(@class, 'attachment-shop_thumbnail size-shop_thumbnail')]/@src");
addimgsItem = addimg.Attributes["src"].Value;
addimgsItem = Regex.Replace(addimgsItem, "-100x100", "");
Или тут через коллекцию нод нужно?

А получить нужно все (если они есть)

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

Warchunn

Client
Регистрация
29.04.2019
Сообщения
7
Благодарностей
0
Баллы
1
Сам себе и отвечаю пока не дойду до финала:
Объявляем коллекцию нод
C#:
HtmlNodeCollection addimgs = doc.DocumentNode.SelectNodes("//img[contains(@class, 'attachment-shop_thumbnail size-shop_thumbnail')]/@src");
            if (addimgs.Count == 0)
                break;
            foreach (HtmlNode links in addimgs)
            {
            addimg = links.Attributes["src"].Value;
            //addimg = Regex.Replace(addimgsItem, "-100x100", "");
            project.SendInfoToLog(addimg);
            }
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Я раньше делал через foreach, сейчас перешел на такой формат записи:

C#:
List<string> arr = new List<string>();
string xpath = "//img[contains(@class, 'attachment-shop_thumbnail size-shop_thumbnail')]";

if (doc.DocumentNode.SelectNodes(xPath) != null && doc.DocumentNode.SelectNodes(xpath).Count() >= 1) doc.DocumentNode.SelectNodes(xpath).ToList().ForEach(node =>
{
    if (!string.IsNullOrEmpty(node.InnerText)) arr.Add(node.InnerText.Trim());
});
Дальше из списка раскидываю по переменным исходя из кол-ва в списке.
 
  • Спасибо
Реакции: Warchunn

Warchunn

Client
Регистрация
29.04.2019
Сообщения
7
Благодарностей
0
Баллы
1
Дальше из списка раскидываю по переменным исходя из кол-ва в списке.
Спс, попробую и так, но пока у меня такое:
C#:
HtmlNodeCollection addimgs = doc.DocumentNode.SelectNodes("//img[contains(@class, 'attachment-shop_thumbnail size-shop_thumbnail')]/@src");
            if (addimgs.Count == 0)
                continue;
            foreach (HtmlNode links in addimgs)
            {
            addimg = links.Attributes["src"].Value;
            addimg = Regex.Replace(addimg, "-100x100", "");
            project.Variables["imglinks"].Value = addimg;
            var text = project.Variables["imglinks"].Value;
            var regex = new Regex("http.*jpg");
            var list = project.Lists["links"];
            regex.Matches(text).Cast<Match>().ToList().ForEach(m=>list.Add(m.Value));
            //project.SendInfoToLog(addimg);
            }
Как отделить ссылки разделителем?
Сейчас слитно все:
C#:
http://domain/week-assets/uploads/products/1/5/d/2/2019/03/12-2-14_.jpghttp://domain/week-assets/uploads/products/3/e/c/f/2019/03/12-2-14_2.jpg
Далее две задачи - обрезать (или оставить - пока еще не знаю) полную ссылку и очистить от дублей. Ну и потом внести результат в другой список для заполнения .csv файла.
 

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