powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA и WEB
19 сообщений из 169, страница 7 из 7
VBA и WEB
    #39839898
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkcourtXMLHTTP - тебе ошибкой скажет, что запрошена несуществующая страницаПодключаешься же к запрашиваемой странице. Или это другое?Твой УРЛ страниц ведь типа этого
http://ааааа.ru/bbbbb/ ?page=2

Вот и "крути" безконечный цикл с нарастающим номером страницы, подставляя его в шаблон УРЛ-а (вместо 2).
Как получишь ошибку "Не удается найти указанный ресурс." - выход из цикла
...
Рейтинг: 0 / 0
VBA и WEB
    #39839902
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtferzmikkпропущено...
Это всё лишние "телодвижения" :)Как правильно и оптимально писать, чтобы выгрузить количество "страничек"?
...
Рейтинг: 0 / 0
VBA и WEB
    #39839920
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
courtВот и "крути" безконечный цикл с нарастающим номером страницы, подставляя его в шаблон УРЛ-а (вместо 2).
Как получишь ошибку "Не удается найти указанный ресурс." - выход из циклаКак вариант. Но хочу разобраться, как можно вытащить через открывающие вложенные тэги.
...
Рейтинг: 0 / 0
VBA и WEB
    #39839941
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант 1
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit
Private WithEvents WB As WebBrowser

Private Sub UserForm_Activate()
  Set WB = Me.Controls.Add("Shell.Explorer.2")
  WB.Navigate "file:///C:/Users/Acer/Desktop/Сайт/Главная страница.htm"
End Sub

Private Sub WB_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Dim htmlDoc As MSHTML.HTMLDocument
    Set htmlDoc = pDisp.Document    
    ...
End Sub

Вариант 2
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Option Explicit

Sub Procedure_1()

Dim cantrol As Control
Dim Broser As Object
 
Set cantrol = UserForm2.Controls.Add("Shell.Explorer.2", "WebBroser")
Set Broser = cantrol.Object

cantrol.Navigate "file:///C:/Users/Acer/Desktop/Сайт/Главная страница.htm"

...

UserForm2.Controls.Remove "WebBroser"
End Sub

А если писать код не внутри пользовательской формы, а в отдельной модуле как через динамическое создание контрола. Так получится? Ведь объект pDisp получаем через событийную процедуру WB_NavigateComplete2.
...
Рейтинг: 0 / 0
VBA и WEB
    #39840499
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я правильно понимаю, что вариант 2 не получится?
...
Рейтинг: 0 / 0
VBA и WEB
    #39841767
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выгружаю таблицу из тестового сайта, который похож на реальный сайт. В результате - таблица выгружается.
...
Рейтинг: 0 / 0
VBA и WEB
    #39841768
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выгружаю таблицу из реального сайта. В результате - таблица не выгружается.
...
Рейтинг: 0 / 0
VBA и WEB
    #39841769
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему так? На что нужно обратить внимание?

Фрагмент кода из реального сайта
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<div class="results-frame"> 
  <table class="list border">
      <tbody>
        <tr>
         ...
        </tr>
        <tr class=" ">
          ...
        </tr>
        <tr class="even ">
          ...
       </tr>
       <tr class=" ">
          ...
       </tr>      
    </tbody>
  </table>
</div>

...
Рейтинг: 0 / 0
VBA и WEB
    #39841784
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. свой htmlDoc2 , вы неправильный тип переменной указали
...
Рейтинг: 0 / 0
VBA и WEB
    #39841789
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneсм. свой htmlDoc2 , вы неправильный тип переменной указали
Акцент пока на переменную htmlDoc

В окне Watches
Код: vbnet
1.
htmlDoc.getElementsByTagName("table")

таблица не выгружается
...
Рейтинг: 0 / 0
VBA и WEB
    #39841798
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скорее всего ваш документ ещё нге загрузился, там пустая страница about:blank . нужно дождаться загрузки
...
Рейтинг: 0 / 0
VBA и WEB
    #39841801
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneскорее всего ваш документ ещё нге загрузился, там пустая страница about:blank . нужно дождаться загрузкиВсе также
...
Рейтинг: 0 / 0
VBA и WEB
    #39841810
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуйте дальше, начните с простых html и посмотрите примеры использования контрола WebBrowser в интернете
...
Рейтинг: 0 / 0
VBA и WEB
    #39841914
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneсм. свой htmlDoc2 , вы неправильный тип переменной указалиНадо MSHTML.IHTMLElementCollection?
...
Рейтинг: 0 / 0
VBA и WEB
    #39841917
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Беру другие сайты. То же самое.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Option Explicit
Private WithEvents WB As WebBrowser

Private Sub UserForm_Activate()
    Set WB = Me.Controls.Add("Shell.Explorer.2")
    'WB.Navigate "view-source:https://www.vestidos.ru/pages/size_table.php"
    WB.Navigate "http://www.segment.ru/analytics/obzor_otrasli_ryinok_kantselyarskih_tovarov_i_ofisnoy_bumagi_istochnik_rbk/"
End Sub

Private Sub WB_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Dim htmlDoc As MSHTML.HTMLDocument
    Set htmlDoc = pDisp.Document
    
    Dim htmlDoc2 As MSHTML.IHTMLElementCollection
    Set htmlDoc2 = htmlDoc.getElementsByTagName("table")
End Sub

...
Рейтинг: 0 / 0
VBA и WEB
    #39842030
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkБеру другие сайты. То же самое.Почему так?
...
Рейтинг: 0 / 0
VBA и WEB
    #39851369
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот даже если выгружать с текущего сайта, то не находит таблицу. Тег html находит, а тег table не находит. Почему?
...
Рейтинг: 0 / 0
VBA и WEB
    #39852063
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот еще. Чтобы выгрузить с использованием фильтра - надо вставить параметры и нажать на кнопку. С помощью getElementById получается программно ввести ключевое слово "Парсинг" в поле "Поиск", а также ввести значение "Microsoft Office" в поле "Форум". У кнопки нету ID, поэтому надо выйти на div c ID "content-wrapper-forum", а дальше через Child выйти на кнопку.

1. Вышел на кнопку. Работает клик.
Код: vbnet
1.
HTMLDoc.getElementById("content-wrapper-forum").Children(0).Children(0).Children(1).Children(0).Children(2)

Скажите, учитывая, что у кнопки нету ID, возможно ли было написать строку по короче?

2. Не работает клик (выбор) опции "Microsoft Office"
Код: vbnet
1.
2.
Set HTMLInput_Forum = HTMLDoc.getElementById("ComboForums")(52)
HTMLInput_Forum.Click

Как правильно написать?

3. Возможно ли было выйти на опцию "Microsoft Office" не указывая индекс, а использовать, скажем, поисковый метод, где указывается "Microsoft Office" и выводит на нужную опцию?

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
Option Explicit
Sub GetHTMLDocument2()

Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLInput_keyword, HTMLInput_Forum As MSHTML.IHTMLElement
Dim HTMLButton As MSHTML.IHTMLElement

IE.Visible = True
IE.Navigate "https://www.sql.ru/forum/afsearch.aspx?s=&submit=%CD%E0%E9%F2%E8&bid=-3"

Do While IE.ReadyState <> READYSTATE_COMPLETE
Loop

Set HTMLDoc = IE.Document

Set HTMLInput_keyword = HTMLDoc.getElementById("searchQuery")
HTMLInput_keyword.Value = "Парсинг"

Set HTMLInput_Forum = HTMLDoc.getElementById("ComboForums")(52)
'HTMLInput_Forum.Value = "Microsoft Office"
HTMLInput_Forum.Click

Set HTMLButton = HTMLDoc.getElementById("content-wrapper-forum").Children(0).Children(0).Children(1).Children(0).Children(2)
HTMLButton.Click

End Sub

...
Рейтинг: 0 / 0
VBA и WEB
    #39853301
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk2. Не работает клик (выбор) опции "Microsoft Office"
Код: vbnet
1.
2.
Set HTMLInput_Forum = HTMLDoc.getElementById("ComboForums")(52)
HTMLInput_Forum.Click

Как правильно написать?
Код: vbnet
1.
HTMLDoc.getElementById("ComboForums").selectedIndex = 52
...
Рейтинг: 0 / 0
19 сообщений из 169, страница 7 из 7
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA и WEB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]