Парсинг сайтов в Excel. Выкачиваем расстояния макросом VBA

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 พ.ค. 2020
  • Настройка парсинга расстояний с сайта своими руками. Достаточно простенького макроса Excel чтобы получить желаемое.
    Function GetHTTPResponse(ByVal sURL As String) As String
    On Error Resume Next
    Set oXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    With oXMLHTTP
    .Open "GET", sURL, False
    .send
    GetHTTPResponse = .responseText
    End With
    Set oXMLHTTP = Nothing
    End Function
    Function km(FromCity As String, ToCity As String)
    текст = GetHTTPResponse("www.avtodispetcher.ru/distanc..." & FromCity & "&to=" & ToCity)
    НачальныйТекст = "totalDistance"
    Начало = InStr(1, текст, НачальныйТекст) + Len(НачальныйТекст) + 2
    Подстрока = Mid(текст, Начало, 50)
    Конец = InStr(1, Подстрока, "/span") - 2
    km = Mid(текст, Начало, Конец)
    End Function
    Sub РасчетРасстояний()
    i = 2
    While Cells(i, 1) неравно ""
    Cells(i, 3) = km(Cells(i, 1), Cells(i, 2))
    i = i + 1
    Wend
    End Sub
    Хочется еще?
    Вот мой телеграмм канал: t.me/TrueExcel
    Контакт для связи: t.me/Pavel_Taranukha
    realxls
    dzen.ru/real_excel
    vc.ru/u/2288927-realnyy-eksel
    Да и просто подписывайтесь - люблю, когда растут цифры ;-)

ความคิดเห็น • 78

  • @user-rv8hk4uw9y
    @user-rv8hk4uw9y ปีที่แล้ว +1

    Для меня, это одно из самых лучших и полезных видео по Excel. Павел, огромное Вам спасибо!

  • @AlexConglomerate
    @AlexConglomerate 4 ปีที่แล้ว +8

    Наконец-то... Дождались!

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว +1

      В следующем видео в казино пойдем. На рулетку ;-)

  • @kimWimp
    @kimWimp 2 ปีที่แล้ว +1

    Супер! Наконец-то понял что когда-то не зря в институте бейсик изучал

  • @vitaliyivanov1477
    @vitaliyivanov1477 ปีที่แล้ว

    Весь день искал решение, в час ночи нашел))) завтра буду пробовать 👍👍👍

  • @user-kv4jq8mq3z
    @user-kv4jq8mq3z ปีที่แล้ว

    Ценно, ценно. Спасибо, Павел!

  • @vladimirkuzmenko3533
    @vladimirkuzmenko3533 4 ปีที่แล้ว

    Супер огромное спасибо!!! Давно искал эту информацию.

  • @user-lc4uf9rc9s
    @user-lc4uf9rc9s ปีที่แล้ว

    Это просто перфекто! Спасибо огромнейшее)

  • @1gr3k
    @1gr3k 4 ปีที่แล้ว +1

    Очередной топчик!!! Берегитесь сайты DOS атак ;)

  • @denispotapov9828
    @denispotapov9828 4 ปีที่แล้ว +1

    Круто, полезная штука!

  • @user-gp5jw5gj1b
    @user-gp5jw5gj1b 3 ปีที่แล้ว

    Круто, вот реально крутой контент лайк + подписка однозначно

  • @dncdncdncdnc8034
    @dncdncdncdnc8034 4 ปีที่แล้ว +2

    не в тему конечно, но отпишусь:
    за функцию спасибо, но меня больше радует позитивный настрой и улыбка на лице...
    реальный эксель - реально поднимает настроение
    спасибо

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Спасибо! А я уж подумывал, что нужно позанудливее быть)

  • @Magic-oc1jk
    @Magic-oc1jk 5 หลายเดือนก่อน

    огромное спасибо за информацию

  • @user-vp2ky7zz9z
    @user-vp2ky7zz9z ปีที่แล้ว

    Каааак же вовремя то!!!!

  • @Stalin-dm9br
    @Stalin-dm9br 4 ปีที่แล้ว +1

    Здравствуйте видео супер. Хочется что бы Вы развивали данную тему. Это будет и для Вас полезно. 1. Хотелось бы увидеть как парсить многостраничные сайты с разными конструкциями. 2. Что если макросы или функции делать более гибкими например адрес сайта не вбивать в код макроса а прописывать в ячейке и код будет брать его оттуда. Так же и с остальными параметрами.

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Здесь я делюсь различными подходами и приемами, которые сам использую в своей практике. Конечно же будет здорово если мои видео натолкнут на еще более интересные решения!))

    • @Stalin-dm9br
      @Stalin-dm9br 4 ปีที่แล้ว

      @@Pavel_Taranukha скажите пожалуйста то что я предлагаю насчет гибкости, это возможно реализовать?

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Конечно можно)
      Нужно просто вкурить объектную модель:
      Книга - лист - ячейка.
      Соответственно чтобы из макроса достучаться до ячейки а1 в Лист1 нужно написать:
      Sheets("Лист1").Range("A1")
      Или
      Sheets("Лист1").Cells(1,1)

  • @user-gt7tq1sw8g
    @user-gt7tq1sw8g 4 ปีที่แล้ว +1

    👍

  • @alexandrabramov227
    @alexandrabramov227 3 ปีที่แล้ว

    Круто, дружище! Просмотров не много ввиду специфической темы (это не сиски и котики), но не останавливайся!!! Благое дело делаешь!!
    Вопрос как к гуру. Можно ли получить в immediate JSON ответ от запроса отсылая ссылку и несколько переменных?

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว +1

      Спасибо! Про json - Скорее всего можно, но у меня пока такой потребности не было и прямо сейчас нет готовых решений.

  • @user-sc5yk5wk3x
    @user-sc5yk5wk3x 3 ปีที่แล้ว +1

    Добрый день. Я только начинаю изучать эту тему. Для меня не понятно. С чего начать? Подскажите пожалуйста

  • @user-sc5yk5wk3x
    @user-sc5yk5wk3x 3 ปีที่แล้ว +1

    Добрый день. Спасибо за виде очень интересно и познавательно. Подскажите как сделать парсинг с сайта с тестами. Где надо сделать сбор вопросов и ответов верных и неверных. Спасибо

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว

      Добрый день!
      На канале есть три способа парсинга. Нужно выбрать тот, который подойдет для вашего сайта.)

    • @user-sc5yk5wk3x
      @user-sc5yk5wk3x 3 ปีที่แล้ว

      @@Pavel_Taranukha спасибо

  • @user-ju2yq8wd6g
    @user-ju2yq8wd6g 7 หลายเดือนก่อน

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

  • @user-pk7lg1tw2p
    @user-pk7lg1tw2p 3 ปีที่แล้ว

    Большое спасибо. Очень полезное видео.
    Попробовал повторить по тому же сайту и все получилось, но когда делал тоже самое уже на другом сайте при выдаче вылетает какой то код. ">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().get".
    Как можно с этим справиться?

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว

      Экспериментировать, искать варианты. Попытаться понять почему функция не возвращает тот код хтмл, который возвращает браузер. Возможно попробовать поработать через объект internet explorer. Возможно попробовать через гугл таблицы, через функцию importhtml - она клёвая))

  • @umrbekmatrasulov4141
    @umrbekmatrasulov4141 3 ปีที่แล้ว +1

    а что если запрос на сайте не get, а post

  • @user-vf1cj9wk1n
    @user-vf1cj9wk1n ปีที่แล้ว

    У меня не работает выдает ошибку list separator or )? Прямо сначала решил все сделать как на видео и не получилось

  • @user-dx7mf8ky1u
    @user-dx7mf8ky1u 4 ปีที่แล้ว

    Здравствуйте пытаюсь парсить через макрос (CreateObject("WinHttp.WinHttpRequest.5.1")), почему после post в .send { переменная из листа через range("a1")} не срабатывает

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Отключите on error resume next и посмотрите какая ошибка вылетает. Нужно проверить какая строка передается и дает ли она нужный результат, будучи скопирована в строку адреса браузера.

  • @makss734
    @makss734 4 ปีที่แล้ว

    а как данный код применить к парсингу интернет магазина? например вывести цену по штрихкоду?

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Зависит от деталей: что за магазин, где взять штрихкод и пр... в ролике дается общий подход, но везде есть свои нюансы. Пробуйте и обязательно получится;)

  • @yoQkee
    @yoQkee 3 ปีที่แล้ว

    Магия вне Хогвартса

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว

      Мои видео не смотрят маглы. Исключительно будущие или практикующие чародеи;-)

  • @mr.brightside_21
    @mr.brightside_21 4 ปีที่แล้ว

    Здравствуйте. У меня на макбуке не работает функция GetHTTPResponse. Не подскажите, пожалуйста, что в коде следует дописать? Спасибо!

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว

      Нет повести печальнее на свете чем макросы экселя на макбуке. Как, впрочем и сводные таблицы, и срезы, и другие новомодные фишки(

  • @user-bh2ot5ks8f
    @user-bh2ot5ks8f ปีที่แล้ว

    А почему не парить страницу через mshtml или msxml, и найти тег уже по id 🤔

  • @Kilotki
    @Kilotki 4 ปีที่แล้ว +1

    здравствуйте. У меня почему-то ругается на Set oXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
    пишет Variable not defined
    Просто скопировал ваш текст из описания видео, и вставил в модуль. В чем может быть проблема?

    • @Pavel_Taranukha
      @Pavel_Taranukha  4 ปีที่แล้ว +1

      Доброго дня! Возможно требуется подключить библиотеку WinHttp.WinHttpRequest.5.1.
      Для этого в VisualBasic нужно нажать меню Tools -> References и там найти нужную библиотеку.
      Она скорее всего будет называться "Microsoft WinHttp Services, version 5.1"
      Ставим на ней галку и жмем ОК.

    • @user-rv8hk4uw9y
      @user-rv8hk4uw9y ปีที่แล้ว

      Или попробуйте удалить строчку вверху: "Option Explicit"

  • @bohdankuhar7763
    @bohdankuhar7763 ปีที่แล้ว

    а можно ли поставить таймер на запросы? пробовал ставить .SetTimeouts перед .Open, но vba будто просто его игнорирует (

    • @Pavel_Taranukha
      @Pavel_Taranukha  ปีที่แล้ว

      Долго искать, но вот здесь я таймер задержки использовал.
      th-cam.com/video/KdlbvthMVvo/w-d-xo.html

  • @user-qp2ll3kn4q
    @user-qp2ll3kn4q 3 ปีที่แล้ว

    У этого сайта же есть REST Api!

  • @Ghost11237
    @Ghost11237 4 ปีที่แล้ว

    Не могу разобраться в чем проблема, сначала повторял шаг за шагом и при просчёте вылазила ошибка argument not optional, потом уже просто под чистую скопировал полностью Ваш код и теперь при запуске макроса вылазит ошибка invalide procedure call or argument. Подскажите, в чем может быть проблема?

    • @user-ku9eq9vw9l
      @user-ku9eq9vw9l 4 ปีที่แล้ว

      Там где написано "неравно" напишите . Просто ютуб это не хотел пропускать.

    • @fdeghb4418
      @fdeghb4418 2 ปีที่แล้ว

      @@user-ku9eq9vw9l часа полтора убил с перерывами, не работало, то меню vba project пропадет, то кириллица крякодяброй, то нормально вставляется (и в настройки региональных стандартов залезал) . пока не сверил с текстом в видео не получилось. адрес сайта по другому написан и в одной из строчек в тексте 2, а в видео 1. В конце все строчку km = Mid(текст, Начало, Конец) подсвечивало.

  • @user-zf5nj3jc4u
    @user-zf5nj3jc4u 3 ปีที่แล้ว +1

    При проверки функции GetHTTPResponse пишет о проблеме expected list separator or. В чем может быть ошибка?

    • @MrDjoniJoker
      @MrDjoniJoker 3 ปีที่แล้ว +1

      Такая же проблема

    • @semenyukek
      @semenyukek 3 ปีที่แล้ว +1

      И у меня та же история...нашли решение?

    • @MrDjoniJoker
      @MrDjoniJoker 3 ปีที่แล้ว

      @@semenyukek да Гугл Таблицы importXML

    • @user-fh5rh5rz7j
      @user-fh5rh5rz7j 3 ปีที่แล้ว +2

      @@semenyukek Когда ссылку вставляете, оберните ссылку в кавычки " "

    • @bettupa3222
      @bettupa3222 3 ปีที่แล้ว

      @@user-fh5rh5rz7j спасибо саня

  • @user-nw5lu1kg1n
    @user-nw5lu1kg1n 3 ปีที่แล้ว

    Парсер нашла этого юру на тиктокн там архив . спросила за что тайна Ханта и лайма погибли ? Жду ответа

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว

      Наверное я не все понял в вашем сообщении, но вам тоже всего хорошего и скорейшего получения всех ответов

    • @user-nw5lu1kg1n
      @user-nw5lu1kg1n 3 ปีที่แล้ว

      @@Pavel_Taranukha много вопросов и никогда ини кому не желаю этой участи у самой хасюха

  • @Tom_2106
    @Tom_2106 3 ปีที่แล้ว

    Я думал я один такой невежа пишу переменные на русском. А нет. Есть ещё такие как и я)

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว +2

      Нет, ну а для кого системы уже много лет кирилическую локализацию поддерживают. Невежды имя переменной ударом кулака по клавиатуре задают, а мы - славянофилы. Мы к кирилице с любовью и пиететом)))

    • @SV-13
      @SV-13 ปีที่แล้ว

      Вы ещё и невежда, судя по употреблению в данном случае слова "невежа"...

  • @maxedison9222
    @maxedison9222 2 หลายเดือนก่อน

    А вы переменные на русском языке всегда определяете?не глючит vba, не ругается временами?

    • @Pavel_Taranukha
      @Pavel_Taranukha  2 หลายเดือนก่อน +1

      Только если в игривом настроении. ВБА никогда по этому поводу не глючил. Всеяден, чертяка)

  • @FormAlDeGid
    @FormAlDeGid 3 ปีที่แล้ว

    Punto Switcher по вам плачет сударь!

    • @Pavel_Taranukha
      @Pavel_Taranukha  3 ปีที่แล้ว

      Это я от него плачу))) потому и не ставлю. Слишком много матерюсь я от него, сударь. Не сдежан'с

  • @user-jw1if1lg4u
    @user-jw1if1lg4u 4 ปีที่แล้ว

    👍