С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100

Парсинг aliexpress

24.07.2022, 15:32. Показов 1940. Ответов 14
Метки с# (Все метки)

Студворк — интернет-сервис помощи студентам
Всем ку
Пытаюсь запарсить сайт(https://aliexpress.ru/item/100... 23e8WhHkLx) используя следующий код


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
           try {
                using (var hdl = new HttpClientHandler() { AllowAutoRedirect = false, AutomaticDecompression = System.Net.DecompressionMethods.Deflate | System.Net.DecompressionMethods.GZip }) {
                    using (var clnt = new HttpClient(hdl)) {
                        using (var resp = clnt.GetAsync(URL).Result) {
                            if (resp.IsSuccessStatusCode) {
                                var html = resp.Content.ReadAsStringAsync().Result;
                                if (!string.IsNullOrEmpty(html)) {
                                    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                                    doc.LoadHtml(html);
                                    var price = doc.DocumentNode.SelectSingleNode("span[@class='ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current']").InnerText;
                                }
                            }
                        } 
                    }
                }
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message);
            }
но он выводит ошибку System.NullReferenceException: "Ссылка на объект не указывает на экземпляр объекта."
HtmlAgilityPack.HtmlNode.SelectSingleNod e(...) вернул null.
Не понимаю почему он не находит, но скорее всего я не правильно указал путь до узла
Подскажите, пожалуйста, как решить
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.07.2022, 15:32
Ответы с готовыми решениями:

API AliExpress: как можно покупать товары?
Здравствуйте. Могли бы Вы подсказать, каким образом можно покупать товары aliexpress через API? p.s. и перенесите тему в нужный...

Парсинг JSON ответа. Парсинг строки с массивами
Есть ответ с сервера в виде json: ,\"Polygon\":,]}", "OrganizationId": 2, "SyncDate": "2021-01-20T11:23:42.007" ...

Парсинг aliexpress
У меня возникает проблема при парсинге с aliexpress на Python. Использовал requests вместе с fake_useragent. При выводе responce.text...

14
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 16:33
Лучший ответ Сообщение было отмечено 79084897214 как решение

Решение

у меня с таким xpath получается

Code
1
//span[contains(@class, 'ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current
Добавлено через 2 минуты
в консоли браузера проверил:

JavaScript
1
let innerText= document.evaluate("//span[contains(@class, 'ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current')]", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.innerText;
JavaScript
1
"74 990,00 руб."
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
24.07.2022, 16:51  [ТС]
почему-то вставил Ваш путь
C#
1
var price = doc.DocumentNode.SelectSingleNode("//span[contains(@class, 'ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current").InnerText;
но выдает ошибку {"Является незавершенной строкой."}
может как-то не так вставил
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 17:07
кто выдает ошибку ?
студия подсвечивает ?

можно так xpath скопировать
https://stackoverflow.com/a/42194160
а с таким xpath нормально ?
/html/body/div[1]/div/div/div[5]/div/div/div[1]/div/div[2]/div[4]/span[1]

Добавлено через 1 минуту
Цитата Сообщение от 79084897214 Посмотреть сообщение
но выдает ошибку {"Является незавершенной строкой."}
префикс для экранирования '@' добавьте перед строкой

C#
1
str = @"....";
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
24.07.2022, 17:10  [ТС]
если задавать путь /html/body/div[1]/div/div/div[5]/div/div/div[1]/div/div[2]/div[4]/span[1] то Exception выбрасывает исключение "Ссылка на объект не указывает на экземпляр объекта" а если ставить символ экранирования то ошибка та же
Не могли бы скинуть свой код, пожалуйста
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 17:11
да нет у меня никакого кода, нет студии.
только браузер в наличии, в браузере проверяю.
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
24.07.2022, 17:11  [ТС]
потому что мне кажется что у меня ошибка связанно с доступом, может быть
тк если у меня даже ваш код не заработает то проблема явно не в нем(
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 17:13
Цитата Сообщение от 79084897214 Посмотреть сообщение
"Ссылка на объект не указывает на экземпляр объекта"
возможно на алиэкпресс есть защита от парсинга

Добавлено через 38 секунд
Цитата Сообщение от 79084897214 Посмотреть сообщение
мне кажется что у меня ошибка связанно с доступом,
да, мне тоже
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
24.07.2022, 17:33  [ТС]
Все равно спасибо!
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 17:34
cтудию найду. попробую селениумом .

Добавлено через 1 минуту
возможно цена подгружается позже .
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
24.07.2022, 17:34  [ТС]
спасибо!
0
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 18:24
с селениумом получилось
и так
Code
1
/html/body/div[1]/div/div/div[5]/div/div/div[1]/div/div[2]/div[4]/span[1]
и с
Code
1
ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current

не знаю подходит ли такое решение.
только для проверки сделал
... то есть дело не в защите :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using OpenQA.Selenium;
using OpenQA.Selenium.Opera;
using System;
 
namespace ConsoleCSSelenium
{
    class Program
    {
        static void Main()
        {
            OperaDriverService service = OperaDriverService.CreateDefaultService(@"Путь к драйверу", "operadriver.exe");
            var operaOptions = new OperaOptions
            {
                BinaryLocation = @"C:\Users\ИмяПользователя\AppData\Local\Programs\Opera\opera.exe",
                LeaveBrowserRunning = false
            };
 
            var driver = new OperaDriver(service, operaOptions);
            driver.Navigate().GoToUrl("https://aliexpress.ru/item/1005003470199895.html?sku_id=12000025932684102&spm=a2g2w.productlist.0.2.7ee223e8WhHkLx");
 
            IWebElement priceElem = driver.FindElement(By.XPath(@"//span[contains(@class, 'ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current')]"));
            if (priceElem != null)
                Console.Write(priceElem.Text);
        }
    }
}
Миниатюры
Парсинг aliexpress  
1
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
24.07.2022, 19:55
не успел отредактировать
xpath такой
Code
1
/html/body/div[1]/div/div/div[5]/div/div/div[1]/div/div[2]/div[4]/span[1]
или такой
Code
1
//span[contains(@class, 'ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current')]
Добавлено через минут
через css селектор

C#
1
2
3
 IWebElement priceElem = driver.FindElement(By.CssSelector(@"#\#content > div.Product_Price__container__1uqb8.product-price > span.ali-kit_Base__base__104pa1.ali-kit_Base__default__104pa1.ali-kit_Base__strong__104pa1.price.ali-kit_Price__size-xl__12ybyf.Product_Price__current__1uqb8.product-price-current"));
if (priceElem != null)
Console.Write(priceElem.Text);
Code
1
74 990,00 руб.
Добавлено через
Цитата Сообщение от js_advent Посмотреть сообщение
... то есть дело не в защите :
дело в защите.
нужно притвориться браузером.
1
126 / 94 / 34
Регистрация: 24.06.2022
Сообщений: 253
25.07.2022, 13:32
А если не притворяться браузером...
если отправить запрос и подождать, то можно найти цену на странице.
студии у меня опять нет. поэтому проверяю питоном
задержка на 5 секунд , ищем в html цену -- результат True
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
import requests
import time
params = {
    'sku_id': '12000025932684102',
}
 
response = requests.get('https://aliexpress.ru/item/1005003470199895.html', params=params)
time.sleep(5)
res = response.text.find('ali-kit_Base__base__104pa1 ali-kit_Base__default__104pa1 ali-kit_Base__strong__104pa1 price ali-kit_Price__size-xl__12ybyf Product_Price__current__1uqb8 product-price-current')!= -1
print(res)
Code
1
True

значит на C# c HttpClient и HttpRequestMessage это можно повторить,
1
1 / 1 / 0
Регистрация: 09.07.2020
Сообщений: 100
25.07.2022, 21:56  [ТС]
Спасибо что уделили мне время! У меня получилось!
Уже запарсил и другие сайты, и гитхаб, и хабр
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.07.2022, 21:56
Помогаю со студенческими работами здесь

Парсинг подгружаемых картинок с aliexpress
Вообщем я пытаюсь достать ссылки картинок с алиэкспрес при помощи selenium, проблема возникла тогда когда понадобилась ссылка не на первую...

Парсинг описания товаров с Aliexpress
Всем привет! По url через request requests.get(url) получаю отдачу по товару например,...

AliExpress
Доброго времени суток! Этому магазину можно доверять? Брак бывает? Стоит ли покупать у них флешку?

SSD с AliExpress
Стоит ли заказывать данный SSD диск с AliExpress - KingDian? Сейчас на него скидка и версия на 240ГБ стоит всего 2700 т.р. Кто сталкивался...

SSD c Aliexpress
Друзья как считаете не рискованно заказывать с Китая SSD для ноутбука, со слотом М2? Нашел привлекательны вариант от компании KingSpec,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru