Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7]      все
 Re: VBA и WEB  [new]
court
Member

Откуда:
Сообщений: 1805
ferzmikk
court
XMLHTTP - тебе ошибкой скажет, что запрошена несуществующая страница
Подключаешься же к запрашиваемой странице. Или это другое?
Твой УРЛ страниц ведь типа этого
http://ааааа.ru/bbbbb/?page=2

Вот и "крути" безконечный цикл с нарастающим номером страницы, подставляя его в шаблон УРЛ-а (вместо 2).
Как получишь ошибку "Не удается найти указанный ресурс." - выход из цикла
22 июл 19, 13:00    [21931667]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
court
ferzmikk
пропущено...
Это всё лишние "телодвижения" :)
Как правильно и оптимально писать, чтобы выгрузить количество "страничек"?
22 июл 19, 13:07    [21931677]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
court
Вот и "крути" безконечный цикл с нарастающим номером страницы, подставляя его в шаблон УРЛ-а (вместо 2).
Как получишь ошибку "Не удается найти указанный ресурс." - выход из цикла
Как вариант. Но хочу разобраться, как можно вытащить через открывающие вложенные тэги.
22 июл 19, 13:28    [21931702]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
+Вариант 1
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
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.
22 июл 19, 14:03    [21931729]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Я правильно понимаю, что вариант 2 не получится?
23 июл 19, 14:28    [21932701]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Выгружаю таблицу из тестового сайта, который похож на реальный сайт. В результате - таблица выгружается.

К сообщению приложен файл. Размер - 66Kb
26 июл 19, 10:15    [21935060]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Выгружаю таблицу из реального сайта. В результате - таблица не выгружается.

К сообщению приложен файл. Размер - 63Kb
26 июл 19, 10:16    [21935064]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Почему так? На что нужно обратить внимание?

+Фрагмент кода из реального сайта
<div class="results-frame"> 
  <table class="list border">
      <tbody>
        <tr>
         ...
        </tr>
        <tr class=" ">
          ...
        </tr>
        <tr class="even ">
          ...
       </tr>
       <tr class=" ">
          ...
       </tr>      
    </tbody>
  </table>
</div>
26 июл 19, 10:18    [21935066]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
Konst_One
Member

Откуда:
Сообщений: 11487
см. свой htmlDoc2, вы неправильный тип переменной указали
26 июл 19, 10:44    [21935113]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Konst_One
см. свой htmlDoc2, вы неправильный тип переменной указали

Акцент пока на переменную htmlDoc

В окне Watches
htmlDoc.getElementsByTagName("table")
таблица не выгружается
26 июл 19, 10:51    [21935126]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
Konst_One
Member

Откуда:
Сообщений: 11487
скорее всего ваш документ ещё нге загрузился, там пустая страница about:blank . нужно дождаться загрузки
26 июл 19, 11:00    [21935143]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Konst_One
скорее всего ваш документ ещё нге загрузился, там пустая страница about:blank . нужно дождаться загрузки
Все также
26 июл 19, 11:14    [21935158]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
Konst_One
Member

Откуда:
Сообщений: 11487
пробуйте дальше, начните с простых html и посмотрите примеры использования контрола WebBrowser в интернете
26 июл 19, 11:29    [21935184]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Konst_One
см. свой htmlDoc2, вы неправильный тип переменной указали
Надо MSHTML.IHTMLElementCollection?
26 июл 19, 14:18    [21935392]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Беру другие сайты. То же самое.

+
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


К сообщению приложен файл. Размер - 51Kb
26 июл 19, 14:20    [21935395]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
ferzmikk
Беру другие сайты. То же самое.
Почему так?
26 июл 19, 17:46    [21935648]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
Вот даже если выгружать с текущего сайта, то не находит таблицу. Тег html находит, а тег table не находит. Почему?

К сообщению приложен файл. Размер - 50Kb
19 авг 19, 22:08    [21952947]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
И вот еще. Чтобы выгрузить с использованием фильтра - надо вставить параметры и нажать на кнопку. С помощью getElementById получается программно ввести ключевое слово "Парсинг" в поле "Поиск", а также ввести значение "Microsoft Office" в поле "Форум". У кнопки нету ID, поэтому надо выйти на div c ID "content-wrapper-forum", а дальше через Child выйти на кнопку.

1. Вышел на кнопку. Работает клик.
HTMLDoc.getElementById("content-wrapper-forum").Children(0).Children(0).Children(1).Children(0).Children(2)
Скажите, учитывая, что у кнопки нету ID, возможно ли было написать строку по короче?

2. Не работает клик (выбор) опции "Microsoft Office"
Set HTMLInput_Forum = HTMLDoc.getElementById("ComboForums")(52)
HTMLInput_Forum.Click
Как правильно написать?

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

+
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


К сообщению приложен файл. Размер - 146Kb
21 авг 19, 12:43    [21954279]     Ответить | Цитировать Сообщить модератору
 Re: VBA и WEB  [new]
ferzmikk
Member

Откуда:
Сообщений: 1906
ferzmikk
2. Не работает клик (выбор) опции "Microsoft Office"
Set HTMLInput_Forum = HTMLDoc.getElementById("ComboForums")(52)
HTMLInput_Forum.Click
Как правильно написать?
HTMLDoc.getElementById("ComboForums").selectedIndex = 52
23 авг 19, 15:19    [21956547]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 4 5 6 [7]      все
Все форумы / Microsoft Office Ответить