Тёмный

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

Павел Тарануха
Подписаться 10 тыс.
Просмотров 16 тыс.
50% 1

Настройка парсинга расстояний с сайта своими руками. Достаточно простенького макроса 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.avtodispet..." & 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_Tar...
realxls
dzen.ru/real_e...
vc.ru/u/228892...
Да и просто подписывайтесь - люблю, когда растут цифры ;-)

Опубликовано:

 

28 сен 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 81   
@ДмитрийКобызев-и2ъ
Для меня, это одно из самых лучших и полезных видео по Excel. Павел, огромное Вам спасибо!
@dncdncdncdnc8034
@dncdncdncdnc8034 4 года назад
не в тему конечно, но отпишусь: за функцию спасибо, но меня больше радует позитивный настрой и улыбка на лице... реальный эксель - реально поднимает настроение спасибо
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Спасибо! А я уж подумывал, что нужно позанудливее быть)
@vitaliyivanov1477
@vitaliyivanov1477 Год назад
Весь день искал решение, в час ночи нашел))) завтра буду пробовать 👍👍👍
@ЛабораторияНУИНаУровнеИнтуиции
Это просто перфекто! Спасибо огромнейшее)
@denispotapov9828
@denispotapov9828 4 года назад
Круто, полезная штука!
@AlexConglomerate
@AlexConglomerate 4 года назад
Наконец-то... Дождались!
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
В следующем видео в казино пойдем. На рулетку ;-)
@ДмитрийДонской-й6с
У меня не работает выдает ошибку list separator or )? Прямо сначала решил все сделать как на видео и не получилось
@umrbekmatrasulov4141
@umrbekmatrasulov4141 3 года назад
а что если запрос на сайте не get, а post
@ОльгаГорбатко
@ОльгаГорбатко 4 года назад
👍
@ИванБелков-л5м
@ИванБелков-л5м 3 года назад
Добрый день. Спасибо за виде очень интересно и познавательно. Подскажите как сделать парсинг с сайта с тестами. Где надо сделать сбор вопросов и ответов верных и неверных. Спасибо
@Pavel_Taranukha
@Pavel_Taranukha 3 года назад
Добрый день! На канале есть три способа парсинга. Нужно выбрать тот, который подойдет для вашего сайта.)
@ИванБелков-л5м
@ИванБелков-л5м 3 года назад
@@Pavel_Taranukha спасибо
@maxedison9222
@maxedison9222 4 месяца назад
А вы переменные на русском языке всегда определяете?не глючит vba, не ругается временами?
@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 года назад
Нет повести печальнее на свете чем макросы экселя на макбуке. Как, впрочем и сводные таблицы, и срезы, и другие новомодные фишки(
@Ghost11237
@Ghost11237 4 года назад
Не могу разобраться в чем проблема, сначала повторял шаг за шагом и при просчёте вылазила ошибка argument not optional, потом уже просто под чистую скопировал полностью Ваш код и теперь при запуске макроса вылазит ошибка invalide procedure call or argument. Подскажите, в чем может быть проблема?
@ПавелТарануха-й4с
@ПавелТарануха-й4с 4 года назад
Там где написано "неравно" напишите . Просто ютуб это не хотел пропускать.
@fdeghb4418
@fdeghb4418 2 года назад
@@ПавелТарануха-й4с часа полтора убил с перерывами, не работало, то меню vba project пропадет, то кириллица крякодяброй, то нормально вставляется (и в настройки региональных стандартов залезал) . пока не сверил с текстом в видео не получилось. адрес сайта по другому написан и в одной из строчек в тексте 2, а в видео 1. В конце все строчку km = Mid(текст, Начало, Конец) подсвечивало.
@ЕленаСагитова-щ7ч
@ЕленаСагитова-щ7ч 3 года назад
Парсер нашла этого юру на тиктокн там архив . спросила за что тайна Ханта и лайма погибли ? Жду ответа
@Pavel_Taranukha
@Pavel_Taranukha 3 года назад
Наверное я не все понял в вашем сообщении, но вам тоже всего хорошего и скорейшего получения всех ответов
@ЕленаСагитова-щ7ч
@ЕленаСагитова-щ7ч 3 года назад
@@Pavel_Taranukha много вопросов и никогда ини кому не желаю этой участи у самой хасюха
@FormAlDeGid
@FormAlDeGid 3 года назад
Punto Switcher по вам плачет сударь!
@Pavel_Taranukha
@Pavel_Taranukha 3 года назад
Это я от него плачу))) потому и не ставлю. Слишком много матерюсь я от него, сударь. Не сдежан'с
@Багира.Кошкавегетарианка
Подскажите пожалуйста, а можно это организовать не в экселе, а на сайте например. Внедрить туда выгрузку расстояния также, без всяких гугл и яндекс API ключей?
@ИванБелков-л5м
@ИванБелков-л5м 3 года назад
Добрый день. Я только начинаю изучать эту тему. Для меня не понятно. С чего начать? Подскажите пожалуйста
@kimWimp
@kimWimp 2 года назад
Супер! Наконец-то понял что когда-то не зря в институте бейсик изучал
@Kilotki
@Kilotki 4 года назад
здравствуйте. У меня почему-то ругается на Set oXMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") пишет Variable not defined Просто скопировал ваш текст из описания видео, и вставил в модуль. В чем может быть проблема?
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Доброго дня! Возможно требуется подключить библиотеку WinHttp.WinHttpRequest.5.1. Для этого в VisualBasic нужно нажать меню Tools -> References и там найти нужную библиотеку. Она скорее всего будет называться "Microsoft WinHttp Services, version 5.1" Ставим на ней галку и жмем ОК.
@ДмитрийКобызев-и2ъ
Или попробуйте удалить строчку вверху: "Option Explicit"
@ВасилийШумилов-о8ь
А почему не парить страницу через mshtml или msxml, и найти тег уже по id 🤔
@Stalin-dm9br
@Stalin-dm9br 4 года назад
Здравствуйте видео супер. Хочется что бы Вы развивали данную тему. Это будет и для Вас полезно. 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)
@1gr3k
@1gr3k 4 года назад
Очередной топчик!!! Берегитесь сайты DOS атак ;)
@iamsh00r00p
@iamsh00r00p 3 года назад
DDOS
@ЕвгенийГарагатый
@ЕвгенийГарагатый 4 года назад
При проверки функции GetHTTPResponse пишет о проблеме expected list separator or. В чем может быть ошибка?
@MrDjoniJoker
@MrDjoniJoker 3 года назад
Такая же проблема
@semenyukek
@semenyukek 3 года назад
И у меня та же история...нашли решение?
@MrDjoniJoker
@MrDjoniJoker 3 года назад
@@semenyukek да Гугл Таблицы importXML
@СаняВасиев
@СаняВасиев 3 года назад
@@semenyukek Когда ссылку вставляете, оберните ссылку в кавычки " "
@bettupa3222
@bettupa3222 3 года назад
@@СаняВасиев спасибо саня
@Magic-oc1jk
@Magic-oc1jk 7 месяцев назад
огромное спасибо за информацию
@НиколайСанЫчь
@НиколайСанЫчь 3 года назад
У этого сайта же есть REST Api!
@РифатБахтиев
@РифатБахтиев 4 года назад
Большое спасибо. Очень полезное видео. Попробовал повторить по тому же сайту и все получилось, но когда делал тоже самое уже на другом сайте при выдаче вылетает какой то код. ">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().get". Как можно с этим справиться?
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Экспериментировать, искать варианты. Попытаться понять почему функция не возвращает тот код хтмл, который возвращает браузер. Возможно попробовать поработать через объект internet explorer. Возможно попробовать через гугл таблицы, через функцию importhtml - она клёвая))
@bohdankuhar7763
@bohdankuhar7763 Год назад
а можно ли поставить таймер на запросы? пробовал ставить .SetTimeouts перед .Open, но vba будто просто его игнорирует (
@Pavel_Taranukha
@Pavel_Taranukha Год назад
Долго искать, но вот здесь я таймер задержки использовал. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-KdlbvthMVvo.html
@Жека-ъ5ц
@Жека-ъ5ц 4 года назад
Здравствуйте пытаюсь парсить через макрос (CreateObject("WinHttp.WinHttpRequest.5.1")), почему после post в .send { переменная из листа через range("a1")} не срабатывает
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Отключите on error resume next и посмотрите какая ошибка вылетает. Нужно проверить какая строка передается и дает ли она нужный результат, будучи скопирована в строку адреса браузера.
@СветланаВоробьева-ь8т
Каааак же вовремя то!!!!
@vladimirkuzmenko3533
@vladimirkuzmenko3533 4 года назад
Супер огромное спасибо!!! Давно искал эту информацию.
@Виталий-и4б6л
@Виталий-и4б6л 3 года назад
Круто, вот реально крутой контент лайк + подписка однозначно
@alexandrabramov227
@alexandrabramov227 4 года назад
Круто, дружище! Просмотров не много ввиду специфической темы (это не сиски и котики), но не останавливайся!!! Благое дело делаешь!! Вопрос как к гуру. Можно ли получить в immediate JSON ответ от запроса отсылая ссылку и несколько переменных?
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Спасибо! Про json - Скорее всего можно, но у меня пока такой потребности не было и прямо сейчас нет готовых решений.
@ИльяЗозуля-х3я
@ИльяЗозуля-х3я 2 года назад
Ценно, ценно. Спасибо, Павел!
@makss734
@makss734 4 года назад
а как данный код применить к парсингу интернет магазина? например вывести цену по штрихкоду?
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Зависит от деталей: что за магазин, где взять штрихкод и пр... в ролике дается общий подход, но везде есть свои нюансы. Пробуйте и обязательно получится;)
@ПавелКраков-п7ь
@ПавелКраков-п7ь 2 месяца назад
раньше с петровича парсил цены, теперь лавочку прикрыли.. обидно блин
@Pavel_Taranukha
@Pavel_Taranukha 2 месяца назад
как так?? правда я питоном у них забирал через апишку...
@ПавелКраков-п7ь
@ПавелКраков-п7ь 2 месяца назад
@@Pavel_Taranukha я тоже питоном
@МаксимусАве
@МаксимусАве 4 года назад
👍
@Tom-h21
@Tom-h21 4 года назад
Я думал я один такой невежа пишу переменные на русском. А нет. Есть ещё такие как и я)
@Pavel_Taranukha
@Pavel_Taranukha 4 года назад
Нет, ну а для кого системы уже много лет кирилическую локализацию поддерживают. Невежды имя переменной ударом кулака по клавиатуре задают, а мы - славянофилы. Мы к кирилице с любовью и пиететом)))
@SV-13
@SV-13 Год назад
Вы ещё и невежда, судя по употреблению в данном случае слова "невежа"...
Далее
Excel не работает! Что делать?
10:17
"Когти льва" Анатолий МАЛЕЦ
53:01
Парсинг сайта в эксель
18:28
Просмотров 45 тыс.
Что такое VBA
6:11
Просмотров 29 тыс.
Ядерка-как это будет.
25:55
Просмотров 193 тыс.