|
VBA и WEB
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть задача: написать макрос, который автоматизирует выгрузку данных из сайта. Особенности: - Выгружает основной список с колонками. В каждой строке в определенной колонке есть ссылка - Если зайти на эту ссылку, то выходим на новую страницу этого же элемента: на таблицу со всеми свойствами. В другой закладке этой же страницы элемента есть дочерний список. Есть ссылка для скачивание файла. - Основной список разделен на страницы, присутствует фильтрация. Есть вопросы. Скажите, 1. Для выгрузки данных какой лучше использовать объект: CreateObject("MSXML2.XMLHTTP") или CreateObject("Microsoft.XMLHTTP")? Или лучше использовать какой то другой объект? 2. Как выдергивать список? Только через полученный исходный код как текст, и потом через цикл и как то по тегам выдергивать элементы? Или есть специальная команда для выдергивании списков? 3. Если список разделен на страницы, то получится выгрузить сразу все страницы? Или только по странично? Если выгружать по странично, то важно учесть, что может быть такое, что какой то элемент списка в какой то момент времени может удалиться, добавиться или переместиться. Возможно ли это учесть? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2019, 19:46 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk, 1. Говорят, что MSXML2 более новый namespace, и вроде рекомендуют его. 2. Для кролинга/скрапинга лучше воспользоваться HTMLDocument, и далее при помощи его функционала выдергивать, что нужно. Не помню, но возможно, там даже есть XPath, что существенно облегчит жизнь. 3. Что значит "список разделен на страницы"? Посмотрите как выглядит html и, исходя из этого, парсите. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.07.2019, 23:22 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
iMrTidyferzmikk, 1. Говорят, что MSXML2 более новый namespace, и вроде рекомендуют его.Файлы скачивает? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 00:09 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
iMrTidy2. Для кролинга/скрапинга лучше воспользоватьсяHTMLDocument, и далее при помощи его функционала выдергивать, что нужно. Не помню, но возможно, там даже есть XPath, что существенно облегчит жизнь.Возникает вопрос как это все реализовывать в VBA. В интернете мало инфо на эту тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 17:24 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk, именно потому что у vba нет соответствующих возможностей вы и создаете объект CreateObject("MSXML2.XMLHTTP") и пользуетесь его свойствами и методами. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 22:27 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
Объект "MSXML2.XMLHTTP" относится к JavaScript? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2019, 23:11 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikkОбъект "MSXML2.XMLHTTP" относится к JavaScript?нет на форуме полно примеров, которые легко находятся по словам MSXML2.XMLHTTP ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 00:06 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk1. Для выгрузки данных какой лучше использовать объект: CreateObject("MSXML2.XMLHTTP") или CreateObject("Microsoft.XMLHTTP")? Или лучше использовать какой то другой объект? Экселем парси, - "дешево и сердито" ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 12:55 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
iMrTidy3. Что значит "список разделен на страницы"? Посмотрите как выглядит html и, исходя из этого, парсите. Первая страница http://aaaaa.ru/bbbbb/ Вторая страница http://ааааа.ru/bbbbb/?page=2 Как определить всего таких страниц? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 20:56 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
В VBA использую объекты InternetExplorer и HTMLDocument . В объекте пока не нахожу метода, который определяет количество всего таких страниц. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 21:33 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
В коде страницы это количество находится здесь <span class="dots">...</span> <a href="/aaaaa/?page=15000">15000</a> Я правильно понимаю, что надо вытаскивать после page= и "> ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2019, 21:34 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk, Судя по вопросам, Вам для начала стоит подтянуть знания про HTML и протокол HTTP(S). И даже, возможно, написать Hello World веб-страничку. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 03:14 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
iMrTidyподтянуть знания про HTML и протокол HTTP(S)бгггы ! а чё не сразу TCP/IP какое-нибудь ? :) ТСу нужно распарсить какую-то несчастную страничку, а ты его сразу посылаешь "куда по дальше" "протоколы учить" :) ------------------------------------------- ТС, разбирать HTML DOM - дело предельно неблагодарное ! Редко когда повезёт, и DOM будет валидным XML-ем и его можно загрузить XMLDOMDocument и разобрать "по-человечески" каким-нибудь XPath-ем :) Разве что это будет сайт в строгом соответствии стандарту HTML5 (?) В лучшем случае, это "выкусить" строковыми функциями требуемый "кусок" DOM-а, который будет валидным, и разбирать его в XMLDOMDocument-е По этому, ещё раз, может не дошло сразу: попробуй открыть свою ссылку в Экселе (Файл-Открыть-заряжаешь свою ссылку на страницу-"Открыть") и посмотреть на результат. "Бегать" по ячейкам, всё-таки, на порядок проще, чем парсить строковыми функциями "кривой" DOM ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 09:44 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
courtпопробуй открыть свою ссылку в Экселе (Файл-Открыть-заряжаешь свою ссылку на страницу-"Открыть") и посмотреть на результат. "Бегать" по ячейкам, всё-таки, на порядок проще, чем парсить строковыми функциями "кривой" DOM Открывает долго. Вывелось по ячейкам. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 13:56 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikkОткрывает долго.не дольше чем полная загрузка в ИЕ ferzmikkВывелось по ячейкам.Ну ? Дальше алгоритм понятен ? 1. Ходишь по нужным ячейкам - собираешь лут нужные данные, сохраняешь нужные данные 2. Ходишь по другим нужным ячейкам - собираешь ссылки ("В каждой строке в определенной колонке есть ссылка") 3. Ходишь по собранным ссылкам и повторяешь пп.1,2 4. ... 5. PROFIT Всё это, разумеется, программно, через автоматизацию Экселя ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 14:23 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
courtНу ? Дальше алгоритм понятен ? 1. Ходишь по нужным ячейкам - собираешь лут нужные данные, сохраняешь нужные данные 2. Ходишь по другим нужным ячейкам - собираешь ссылки ("В каждой строке в определенной колонке есть ссылка") 3. Ходишь по собранным ссылкам и повторяешь пп.1,2 4. ... 5. PROFIT Всё это, разумеется, программно, через автоматизацию Экселя Сама идея понятна. Как вариант. Учитывая, что нужная ячейка имеет свою координату (например, заголовок таблицы, название первого столбца таблицы, значение первой строки первой колонки таблицы и т.д.) и после обновления могут быть сдвиги. В качестве ориентира тогда нужно брать, например заголовок колонки и последующие шаги по строкам. В ячейках (значения строк таблицы) присутствуют перенос строк и выводит несколько ячеек, а остальные ячейки объединяются. Поэтому такой момент надо учитывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 14:44 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
Есть такой фрагмент работающего кода. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
Если вместо объекта "InternetExplorer.Application" использовать объект "MSXML2.XMLHTTP", то пишем такой код Код: vbnet 1. 2. 3. 4. 5. 6. 7.
Выдает ошибку "Object doesn't support this property or method". Как из объекта "MSXML2.XMLHTTP" вытащить Document, чтобы присвоить переменной Html? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 16:07 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
XMLHTTP.responseText вы его смотрели? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 16:40 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
Konst_One XMLHTTP.responseText вы его смотрели? Если Вы про возвращаемые типы, то у обоих объектов Html.body.innerHTML и XMLHTTP.responseText возвращаемый тип Variant/String. Если Вы про возвращаемое значение XMLHTTP.responseText Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 17:35 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk Код: vbnet 1. 2.
что-то типа Код: vbnet 1.
должно быть ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 17:36 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
courtчто-то типа Код: vbnet 1.
должно быть Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 18:47 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk, а я бы php взял, удобнее гораздо ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 20:09 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
kealon(Ruslan)ferzmikk, а я бы php взял, удобнее гораздо php не знаю. Пока использую VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2019, 20:32 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk, там очень удобный и достаточно надёжный преобразователь html в xml Код: php 1. 2. 3.
ну а дальше довольно тривиально ищется что нужно Код: php 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2019, 00:18 |
|
VBA и WEB
|
|||
---|---|---|---|
#18+
ferzmikk Код: vbnet 1. 2. 3.
Почему отображается такое диалоговое окно и почему показывает ошибку? Как правильно написать? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2019, 01:22 |
|
|
start [/forum/topic.php?fid=61&msg=39837005&tid=2172006]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 285ms |
total: | 424ms |
0 / 0 |