#c# #html #web-scraping #html-agility-pack
Вопрос:
Я пытаюсь очистить магазин с помощью HtmlAgilityPack, у меня есть название продукта, цена, акции, но мне не хватает изображения. Я искал, как получить изображения с помощью пакета Agility Pack, но все, что я нашел, — это как получить все изображения с веб-сайта, а не только одно. Я попытался выбрать один узел, в котором находится изображение, сделав что-то вроде этого: var imgNode = doc.DocumentNode.SelectSingleNode("//div[@class = 'featured']");
при этом значение imgNode равно всему html-элементу img id, но я хочу получить только текущий источник из значения src. Ссылка из магазина, которую я пытаюсь наскрести, такова: «https://www.fullh4rd.com.ar/prod/18381/monitor-27-gigabyte-g27fc-gaming-curvo-ips-165hz-hdmi-dp» Спасибо, что уделили мне время ^^
Ответ №1:
src
Элемент в html-элементе, если рассматривать его просто как атрибут, может быть получен с помощью его свойства attributes.
Однако приведенный выше код выбирает div, поэтому, как только вы выберете дочерний img
элемент, вы сможете получить доступ к его источнику:
var imgContainer = document.DocumentNode.SelectSingleNode("//div[@class = 'featured']");
var imgNode = imgContainer.SelectSingleNode("//img");
var src = imgNode.Attributes["src"].Value;
В качестве альтернативы найдите img
его напрямую, используя идентификатор:
var imgContainer = document.DocumentNode.SelectSingleNode("//img[@id = 'mainpic']");
Console.WriteLine(imgContainer.Attributes["src"].Value);
Комментарии:
1. Я получаю ноль из этого метода. Я также думал о разделении идентификатора, делая что-то вроде создания node.innerText и разделения идентификаторов, чтобы получить только строку src, но проблема в том, что я не могу получить значение img со строкой.
2. Правка сделана — я только сейчас увидел, что вы выбираете div.
3. Ваше решение было самым точным, которое я нашел, но я не знаю, почему src равен странному изображению на facebook размером 1 пиксель, есть ли способ попытаться выполнить поиск img по его идентификатору? В этом случае идентификатор называется mainpic.
4. Еще одно внесенное изменение — похоже, вам нужно прикрепить базовый URL-адрес к выводу этого кода.
5. Это решило проблему, также для поиска по URL-адресу изображения я добавил ссылку на веб-сайт, так что, например, с этой ссылкой это было fullh4rd.com.ar//img/productos/Pics_Prod/… большое вам спасибо за потраченное время.