Страницы: 1
RSS
Спарсить с сайта название товара и цену
 
Здравствуйте
Как с этого сайта  получить в таблицу все  товары и цену?
Желательно в Power Query
 
Можно прокрутить страницу вниз до конца, сохранить её в виде текста и скормить PQ как текст.
В видеоуроках на сайте есть видео как это сделать.
https://youtu.be/5F9R5OsBxGE
 
Цитата
nilske написал:
Можно прокрутить страницу вниз до конца, сохранить её в виде текста и скормить PQ как текст.
Это какой то полуручной вариант) Не понятно как сохранить как текст

В запросе всего 11 элементов, а на сайте около 342
Код
let
    Source = Text.Combine(Lines.FromBinary(Web.Contents("https://lebazar.uz/products/napitki-80"))," "),
    #"Split Text" = Text.Split(Source, "class=""clickable"" href=""")
in
    #"Split Text"
 
в приложенном архивированном текстовом файле 342 строки ;)
 
nilske, в Power Query такого не получить
 
Михаил Л, я достиг бы поставленной цели запросом готового прайс-листа )
 
Михаил Л, пример запроса к api сайта, с параметрами запроса к апи думаю догадаешься как поиграться. Это для саморазвития.  ;)
Код
let
    head = [
    Accept = "application/json",
    #"Accept-Encoding" = "gzip, deflate",
    #"Accept-Language" = "ru",
    api_version = "1.1",
    app_version = "web-2.0.0",
    companyId = "78",
    Connection = "keep-alive",
    #"Content-Type" = "application/json;charset=utf-8",
    Origin = "https://lebazar.uz",
    Referer = "https://lebazar.uz/",
    #"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
    ],
    Source = Json.Document(Web.Contents("https://web.lebazar.uz/api/v1/search/product?categoryId=80&start=30&limit=20", [Headers=head]))
in
    Source
Изменено: PooHkrd - 12.05.2022 18:29:05
Вот горшок пустой, он предмет простой...
 
PooHkrd, у меня вот с web-запросами совсем беда :( Нет практики. Откуда параметры брать? Есть документация API на сайте?
Изменено: surkenny - 12.05.2022 18:37:36
 
PooHkrd, спасибо)
Видео я в принципе смотрел, но не в тянулся
Я думал что только такой вариант прокатит
 
Цитата
surkenny написал:
Есть документация API на сайте?
в видео есть пример
 
surkenny, открываем в браузере средства разработчика, в разделе Network смотрим какие запросы отправляет браузер при скроллинге страницы, чтобы появлялись новые порции товаров, и оттуда тащим все параметры. Часть ненужных заголовков я удалил, наверняка можно удалить еще методом научного тыка, просто мне лень.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
открываем в браузере средства разработчика, в разделе Network смотрим какие запросы отправляет браузер при скроллинге страницы
А вот за это благодарствую :)
Научно и не очень потыкаю, конечно. А основа есть.
 
Цитата
PooHkrd написал:
Это для саморазвития
Это работает, даже с лимитом строк)
Код
= Json.Document(Web.Contents("https://web.lebazar.uz/api/v1/search/product?categoryId=80&start=50&limit=20", [Headers=head]))
 
Михаил Л, приветствую.
Мой вариант только для сети "korzinka":
1. Собираю все ссылки на каталоги;
2. Делаю функцию, которая будет доставать данные из каждой категории;
3. Каждый каталог подключаю как отдельную таблицу и преобразую эти таблицы одной функцией из п.2;
4. Причесываем.
 
Еще вариант
Код
let
    head = [
    Accept = "application/json",
    #"Accept-Encoding" = "gzip, deflate",
    #"Accept-Language" = "ru",
    api_version = "1.1",
    app_version = "web-2.0.0",
    companyId = "78",
    Connection = "keep-alive",
    #"Content-Type" = "application/json;charset=utf-8",
    Origin = "https://lebazar.uz",
    Referer = "https://lebazar.uz/",
    #"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36"
    ],
    Source = Json.Document(Web.Contents("https://web.lebazar.uz/api/v1/search/product?categoryId=80&start=0&limit=20", [Headers=head])),
    a=List.Transform({0..Number.RoundUp(Source[data][count]/20)}, each
Table.FromRecords(
Json.Document(Web.Contents("https://web.lebazar.uz/api/v1/search/product?categoryId=80&start="&Text.From(_*20)&"&limit=20", [Headers=head]))
[data][list],{"id","name","price"})
 ),
    b = Table.Combine(a)
in
    b
 
Vladimir K, спасибо! Интересный вариант
Добавило мне идею сделать запросом срез из категорий. По выбранной категории из среза грузить товары
Страницы: 1
Наверх