Страницы: 1
RSS
Парсинг VBA. Выгрузка данных из веб страницы.
 
Добрый день.

Помогите пожалуйста распарсить сайт https://lesegais.ru/open-area/rent

Заранее благодарен
 
Это задание?
В каком виде вы ожидаете увидеть помощь от форума?
 
Код для первой страницы:
Код
Sub Parser_LESA()
Dim OBJHTTP As Object
Dim Url$, Str$
Set OBJHTTP = CreateObject("MSXML2.XMLHTTP")
Url = "https://lesegais.ru/open-area/graphql"
With OBJHTTP
    .Open "POST", Url, False
    .setRequestHeader "Accept", "*/*"
    .setRequestHeader "Accept-Encoding", "gzip, deflate, br"
    .setRequestHeader "Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"
    .setRequestHeader "Connection", "keep-alive"
    .setRequestHeader "Content-type", "application/json"
    .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
    .send "{""query"":""query SearchContractLease($size: Int!, $number: Int!, $filter: Filter, $orders: [Order!]) {\n  searchContractLease(filter: $filter, pageable: {number: $number, size: $size}, orders: $orders) {\n    content {\n      companyName\n      inn\n      dealDate\n      constituentName\n      forestryName\n      subForestryName\n      tractName\n      forestBlockNumbers\n      woodVolume\n      __typename\n    }\n    __typename\n  }\n}\n"",""variables"":{""size"":20,""number"":0,""filter"":null,""orders"":null},""operationName"":""SearchContractLease""}"
    Str = .ResponseText
    Debug.Print Str
End With
End Sub


номера страниц прописаны в ""number"":0
0 - это первая страница, вторая страница 1 и т.д.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, Доброго Вам вечера! Спасибо за код, но что то не работает, видимо, где то ещё должна быть настройка параметр. С номером страницы я понял
 
Всё правильно в коде. Страница только тут ""number"":0.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, У Вас получилось выгрузить таблицу в Excel?
 
Доброе время суток
Цитата
Slava977 написал:
У Вас получилось выгрузить таблицу в Excel?
Alemox, показал вам, как получить данные с сайта в формате Json. Разбор Json для вывода таблицей на лист это отдельная задача и вопрос - уже обсуждавшийся на форуме и тем более в интернете.
Версия на Power Query (первые 200 строк). Alemox, большое спасибо за вводные данные POST запроса.
Изменено: Андрей VG - 21.11.2019 20:17:41
 
Андрей VG,Благодарю Вас. Что то новое узнаю для себя. Постараюсь разобраться. У мня было подозрение, что это PQ, но не мог понять куда он сохраняет файл. Вы мне прислали на языке М код. То есть VBA можно трансформировать в PQ? Я ещё не настолько спец. чтоб понимать простые решения. Цитата Рокфеллера. Я не настолько богат, чтоб покупать дешёвые вещи.
 
Цитата
Slava977 написал:
Цитата Рокфеллера. Я не настолько богат, чтоб покупать дешёвые вещи.
Для Рокфеллеров - только не дешевите ;)
Цитата
Slava977 написал:
То есть VBA можно трансформировать в PQ?
Трансформировать - плохое слово. Перевести алгоритм получения данных с одного языка - будет более правильным.
Изменено: Андрей VG - 21.11.2019 20:40:10
 
Во вложении макрос и пример. Нажать кнопку Загрузить и дождаться финального сообщения.
Настроен на то, чтобы парсить последние три страницы указанного сайта. В коде можно поменять на большее количество страниц. У меня всё отлично работает.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, в ""size"":20 можно задавать число выгружаемых за раз строк. У меня 20000 выгрузилось :)
 
Да Андрей я в курсе. Просто решил не вводить хаос в привычное количество, которое выгружается на сайте.  :)
Да и может надо-то только одну страницу, автор не указал.
Оно наверное строками проще даже чем страницами, побыстрее соображает, не надо несколько раз направлять запросы. Думаю автор темы сам сможет уже поправить на количество строк, а не страниц.
Изменено: Alemox - 21.11.2019 20:58:27
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Всех благодарю,  все 86533 строк выгружены! Я с помощью PQ выгружал.   8) Андрей VG, Мне просто показался код похожий на VBA. но может и не совсем так
 
Может будет вопрос не по теме, но мне не понятна запись https://lesegais.ru/open-area/graphql Ведь как я понимаю graphql это связанно с джава скриптом? А если мне предположим нужно взять с этого же сайта но с другого раздела? Просто стало интересно. То есть в коде, что  то нужно поменять?
 
На картинке показано почему. Если вам из другого раздела надо, то смотрите что в другом написано.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Андрей VG, Alemox, Жму Вам руку! Добрый вечер. Спасибо, всё заработало, разобрался, всё отлично выгружает.
 
Добрый вечер! У меня спортивный интерес по парсингу. Вопрос в следующем пытаюсь подключиться к сайту Едадил https://edadeal.ru/moskva/retailers Код у меня получается в click? Помогите грамотно написать. В целом логику уловил, мне бы на другом примере, чтоб Вы продемонстрировали. Далее уже попробую сам. Заранее благодарен!
 
вот не знаю что еще добавить чтобы вытянуть цены и по возможности избавиться от кракозябриков?
Код
let
    Source = Csv.Document(Web.Contents("https://api.edadeal.ru/web/localities/moskva/entities?retailer=5ka"),[Delimiter=",", Encoding=65001]),
    Index = Table.AddIndexColumn(Source, "Индекс", 0, 1),
    Filtered = Table.SelectRows(Index, each [Индекс] >= 1052 and [Индекс] <= 1058)
in
    Filtered
 
Цитата
Slava977 написал:
Добрый вечер! У меня спортивный интерес по парсингу. Вопрос в следующем пытаюсь подключиться к сайту Едадил
Удалось? если не жалко поделитесь файлом.
Страницы: 1
Наверх