#excel #vba #web-scraping
#excel #vba #очистка веб-страниц
Вопрос:
Я работаю над веб-шаблоном в VBA Excel.
Из-за механики веб-сайта, который я очищаю, я должен выполнять это через Excel, поскольку веб-сайт является правительственной платформой, которая проверяет через файл, расположенный на авторизованном компьютере из Internet Explorer, обычно я бы использовал python или parsehub, но вот мы здесь.
Проблема, с которой я столкнулся, заключается в том, что я очищаю приблизительно 6600 уникальных страниц (все отформатированные точно так же), и в настоящее время загрузка каждой страницы занимает от 3 до 5 секунд, что приводит к тому, что макрос должен выполняться от 6 до 9 часов.
Мой вопрос касается механики, учитывая, что я ограничен в скорости загрузки веб-страницы, было бы возможно или осуществимо запустить процесс для нескольких ссылок одновременно, вместо того, чтобы открывать по одной, открывать, скажем, 10 за раз? Или гораздо более вероятно, что горлышко бутылки — это мое подключение к Интернету, а не скорость IE?
Просто мозговой штурм здесь.
Комментарии:
1. Вы искали здесь — много сообщений о веб-обработке vba…
2. Если вы хотите работать быстрее, посмотрите, как использовать
XmlHttpRequest
(надеюсь, ваш веб-сайт позволяет отправлять подобные запросы). Если вам нужно придерживаться роботизированной очистки, то вы можете, например, создать 6 экземпляров (вместо 1)InternetExplorer.Application
и передавать страницы1-999
первому,1000-1999
второму и т.д. — учтите, что VBA — это однопоточный процесс, вы не сможете запускать параллельно 6InternetExplorer
с использованием одного и того же макроса, поэтому вам нужно будет иметь 6 экземпляров Excel, каждый из которых запускает один и тот же макрос на разных страницах.3. Маттео, это интересная идея! Итак, я мог бы объединить несколько экземпляров Excel, используя стандартный vba, например: Sub OpenNewExcelInstance(), затемнить xlApp как Excel. Набор приложений xlApp = Новый Excel. Приложение xlApp.Workbooks. Добавить xlApp.Visible = True Установить xlApp = Ничего в конце Sub
Ответ №1:
Вы можете использовать Selenium Basic, чтобы управлять Google Chrome, а с помощью selenium или IE VBA вы можете запускать множественные экземпляры и запускать скрипты Javascript синхронно.
Я думаю, что лучший способ — это тоже использовать HttpRequest, если страницы не являются динамическими (которые меняются с помощью функций javascript)