powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA и WEB
25 сообщений из 169, страница 3 из 7
VBA и WEB
    #39838353
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

html:
Код: html
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
<html>
<head>
    <title>Тестовая страница</title>
</head>
<body>
    <h1>Статистика</h1>
    <h2>
        Таблица 1</h2>
        Период: 01.01.2019-30.06.2019<br>
        <br>

        <table>

            <tr>
                <th>Колонка 1</th>
                <th>Строка 1 Колонка 2<br>Строка 2 Колонка 2</th>
                <th>Колонка 3</th>
                <th>Колонка 4</th>
                <th>Колонка 5</th>
            </tr>
            <tr>
                <td>Значение 1.1</td>
                <td>
                    <a href="?numberId=00001">Значение 1_1.2</a>
                    <br><br>
                    <a href="?numberId=00001&lotId=00001">Значение 1_2.2</a>
                </td>
                <td>Значение 1.3</td>
                <td>Значение 1.4</td>
                <td>Значение 1.5</td>
            </tr>
            <tr>
                <td>Значение 2.1</td>
                <td>
                    <a href="?numberId=00001">Значение 2_1.2</a>
                    <br><br>
                    <a href="?numberId=00001&lotId=00002">Значение 2_2.2</a>
                </td>
                <td>Значение 2.3</td>
                <td>Значение 2.4</td>
                <td>Значение 2.5
                <td>
            </tr>

        </table>

        <span><span>1</span></span>
        <a href="/aaaaa/?page=2">2</a>
        <a href="/aaaaa/?page=3">3</a>
        <a href="/aaaaa/?page=4">4</a>
        <a href="/aaaaa/?page=5">5</a>
        <a href="/aaaaa/?page=6">6</a>
        <a href="/aaaaa/?page=7">7</a>
        <a href="/aaaaa/?page=8">8</a>
        <a href="/aaaaa/?page=9">9</a>
        <a href="/aaaaa/?page=10">10</a>
        <span>...</span> <a href="/aaaaa/?page=10000">10000</a>

</body>
</html>


VBA:
Код: 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 Test()

Dim xmlHttpReq As MSXML2.XMLHTTP60
Dim doc As MSHTML.HTMLDocument
Dim elems1 As MSHTML.IHTMLDOMChildrenCollection
Dim elems2 As MSHTML.IHTMLDOMChildrenCollection
Dim elems3 As MSHTML.IHTMLDOMChildrenCollection

Set xmlHttpReq = New MSXML2.XMLHTTP60

xmlHttpReq.Open "GET", "file:///C:/Test/HTMLPage1.html", False
xmlHttpReq.send

Set doc = New MSHTML.HTMLDocument
doc.body.innerHTML = xmlHttpReq.responseText
Set elems1 = doc.querySelectorAll("html")
Set elems2 = doc.querySelectorAll("table")
Set elems3 = doc.querySelectorAll("body > a")

Debug.Print elems1.Length
Debug.Print elems2.Length
Debug.Print elems3.Length
Debug.Print elems3(elems3.Length - 1).innerText

End Sub


Результат:
...
Рейтинг: 0 / 0
VBA и WEB
    #39838356
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)обалдеть, ему ещё и валидный html нужен

давно пора завязывать с такими поделками

Не согласен, если класс будет принимать и html, и балалайку, то нарушается приницип Single Responsibility. Если очень нужно, то IE поправит, или сторонние библиотеки. Но, гарантий, что невалидный html попрвится именно так, как нужно, нет. Поэтому публиковать нужно корректный html изначально.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838406
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy,

вот у вас ЧУЖОЙ сайт, в браузере он показывается НОРМАЛЬНО
если мне будет нужно со своего сайта достать инфу, я её точно в html передавать не буду

html-парсер должен работать с тем, что есть, и наиболее адекватно
...
Рейтинг: 0 / 0
VBA и WEB
    #39838408
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внесу немного ясности на счет валидности html.

XMLHTTP60 как класс для работы с http не поправляет результат полученный от сервера, что ожидаемо.
HTMLDocument как класс для работы с html документами поправялет задаваемый ему html до валидного, но гарантий того, что внесенные правки буду именно теми, что ожидаются нет. Такое поведение ожидаемо. В ряде случаев могут потребоваться сторонние библиотеки, или менять ответ с сервера вручную.
IE как приложение, включащее в себя несколько библиотек, делает и то, и другое, и третье, что от него и ожидается.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838412
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)iMrTidy,

вот у вас ЧУЖОЙ сайт, в браузере он показывается НОРМАЛЬНО
если мне будет нужно со своего сайта достать инфу, я её точно в html передавать не буду

html-парсер должен работать с тем, что есть, и наиболее адекватно

Любой браузер, как и IE имеет встроенный механизм правки html до валидного. Браузеры могут по-разному поправить исходный документ, в зависимости от "тяжести" ошибок.

В свете моего разъяснения, XMLHTTP60, HTMLDocument как и IE не являются html парсерами по своей природе. ТС как раз и пишет парсер, пользуюясь функционалом, упомянутых библиотек.

<h1>bla bla</h2> - явная ошибка, хоть HTMLDocument и правит ее на <h1>bla bla</h1>, это не значит, что html валидный и нужно писать так дальше.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838413
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy,
естественно никто гарантий не даёт, их и не может быть
IE уже никто серьёзно не поддерживает

Проксировать и подправлять специально для IE - это мазохизм чистой воды.
Если в распространённом браузере всё показывается нормально, значит и парсер не должен ему уступать
...
Рейтинг: 0 / 0
VBA и WEB
    #39838416
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidy<h1>bla bla</h2> - явная ошибка, хоть HTMLDocument и правит ее на <h1>bla bla</h1>, это не значит, что html валидный и нужно писать так дальше.значит, не значит ...
что делать то?
Предлагаете письмо написать создателю: "мы тут ваш сайт мониторим, цены с него сдираем, подправь, пожалуйста, вот эту, эту и эту страничку, она у вас с ошибками" ?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838422
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
такую наглость проявляли на моей памяти только гугл и яндекс, но у них аргументы есть
...
Рейтинг: 0 / 0
VBA и WEB
    #39838430
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)iMrTidy<h1>bla bla</h2> - явная ошибка, хоть HTMLDocument и правит ее на <h1>bla bla</h1>, это не значит, что html валидный и нужно писать так дальше.значит, не значит ...
что делать то?
Предлагаете письмо написать создателю: "мы тут ваш сайт мониторим, цены с него сдираем, подправь, пожалуйста, вот эту, эту и эту страничку, она у вас с ошибками" ?

Если честно, то я уже не понимаю о чем Вы.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838484
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал запустить макрос на другом компьютере - другая ошибка. На строке
Код: vbnet
1.
xmlHttpReq.send

появляется ошибка "Нельзя вызывать данный метод после вызова метода send".

На другом компьютере установлен Microsoft excel 2013 и Microsoft Excel 365.

Почему так?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838485
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyЕсли честно, то я уже не понимаю о чем Вы. Хорошо, по-русски: то что вы описываете тут уже 3-ю страницу неюзабельно в современных реалиях. Это просто очень дорого в создании и поддержке. За знания того, как накостылять HTMLDocument , что бы он "допетрил", никто не заплатит.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838486
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал запустить макрос на другом компьютере - другая ошибка. На строке
Код: vbnet
1.
xmlHttpReq.send

появляется ошибка "Нельзя вызывать данный метод после вызова метода send".

На другом компьютере установлен Microsoft excel 2013 и Microsoft Excel 365.

Почему так?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838490
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyРезультат:Из Вашего сообщения тот же самый html, тот же самый макрос, только путь к файлу другой. Но у меня такой же результат как и ранее.

Почему так?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838491
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkНа другом компьютере установлен Microsoft excel 2013 и Microsoft Excel 365.
У меня Microsoft excel 2010
...
Рейтинг: 0 / 0
VBA и WEB
    #39838493
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)iMrTidyЕсли честно, то я уже не понимаю о чем Вы. Хорошо, по-русски: то что вы описываете тут уже 3-ю страницу неюзабельно в современных реалиях. Это просто очень дорого в создании и поддержке. За знания того, как накостылять HTMLDocument , что бы он "допетрил", никто не заплатит.

С чего это? У меня все прекрасно работает, как невалидный html, так и поправленный. Я же написал по-русски, что HTMLDocument автоматически доводит html до валидного. Что еще Вы от него ожидаете? Чтобы еще и парсил сам по-щучьему веленью?

Я думаю, что все дело в том, что Вы сами никогда не пробовали писать парсер на VBA, а беретесь судить. Возьмите код и попробуйте, а потом расскажете. VBA в принципе дорогое удовольствие в современных реалиях.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838494
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Добавьте
Код: vbnet
1.
Debug.Print doc.doby.innerHTML


Что у Вас там?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838505
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyДобавьте
Код: vbnet
1.
Debug.Print doc.doby.innerHTML

Что у Вас там?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838506
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikk,

Да, это я опечатку сделал. Там пусто?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838508
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyТам пусто?
...
Рейтинг: 0 / 0
VBA и WEB
    #39838511
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyЗнаки вопроса, скорее всего, потому что у Вам нужно задать кириллицу для программ, которые не поддерживают юникод Вопрос может быть глупый, но где эта кириллица?

У меня windows 8.1 для одного языка.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838514
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkiMrTidyТам пусто?



Проверьте, что xmlHttpReq.responseText

Я полагаю, что файл не считывается, возможно, из-за пробелов, возможно, из-за кирилицы.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838515
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkiMrTidyЗнаки вопроса, скорее всего, потому что у Вам нужно задать кириллицу для программ, которые не поддерживают юникод Вопрос может быть глупый, но где эта кириллица?

У меня windows 8.1 для одного языка.



Да, нужен как раз 'Русский (Россия)'
...
Рейтинг: 0 / 0
VBA и WEB
    #39838521
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyПроверьте, что xmlHttpReq.responseText

Я полагаю, что файл не считывается, возможно, из-за пробелов, возможно, из-за кирилицы.
immediate
Код: html
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<html><head><title>??????title></head>
<body>

<table>
  
    <tr>
      <th>???1</th>
      <th>?? 1 ???2<br>?? 2 ???2</th>
      <th>???3</th>
      <th>???4</th>
      <th>???5</th>
    </tr>
    <tr>
      <td>??? 1.1</td>
      <td>
       <a href="?numberId=00001">??? 1_1.2</a>
       <br><br>
       <a href="?numberId=00001&lotId=00001">??? 1_2.2</a>
      </td>
      <td>??? 1.3</td>
      <td>??? 1.4</td>
      <td>??? 1.5</td>
    </tr>
    <tr>
      <td>??? 2.1</td>
      <td>
        <a href="?numberId=00001">??? 2_1.2</a>
        <br><br>
        <a href="?numberId=00001&lotId=00002">??? 2_2.2</a></td>     
      <td>??? 2.3</td>
      <td>??? 2.4</td>
      <td>??? 2.5<td>
    </tr>
   
</table>

<span><span>1</span></span>
  <a href="/aaaaa/?page=2">2</a>
  <a href="/aaaaa/?page=3">3</a>
  <a href="/aaaaa/?page=4">4</a>
  <a href="/aaaaa/?page=5">5</a>
  <a href="/aaaaa/?page=6">6</a>
  <a href="/aaaaa/?page=7">7</a>
  <a href="/aaaaa/?page=8">8</a>
  <a href="/aaaaa/?page=9">9</a>
  <a href="/aaaaa/?page=10">10</a>
<span>...</span> <a href="/aaaaa/?page=10000">10000</a>

</body>
</html>

Русский язык по логике не должен влиять, так как теги то на английском.
...
Рейтинг: 0 / 0
VBA и WEB
    #39838522
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iMrTidyДа, нужен как раз 'Русский (Россия)'Сейчас как и раньше стоит русский
...
Рейтинг: 0 / 0
VBA и WEB
    #39838525
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkiMrTidyПроверьте, что xmlHttpReq.responseText

Я полагаю, что файл не считывается, возможно, из-за пробелов, возможно, из-за кирилицы.
immediate
Код: html
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.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
<html><head><title>??????title></head>
<body>

<table>
  
    <tr>
      <th>???1</th>
      <th>?? 1 ???2<br>?? 2 ???2</th>
      <th>???3</th>
      <th>???4</th>
      <th>???5</th>
    </tr>
    <tr>
      <td>??? 1.1</td>
      <td>
       <a href="?numberId=00001">??? 1_1.2</a>
       <br><br>
       <a href="?numberId=00001&lotId=00001">??? 1_2.2</a>
      </td>
      <td>??? 1.3</td>
      <td>??? 1.4</td>
      <td>??? 1.5</td>
    </tr>
    <tr>
      <td>??? 2.1</td>
      <td>
        <a href="?numberId=00001">??? 2_1.2</a>
        <br><br>
        <a href="?numberId=00001&lotId=00002">??? 2_2.2</a></td>     
      <td>??? 2.3</td>
      <td>??? 2.4</td>
      <td>??? 2.5<td>
    </tr>
   
</table>

<span><span>1</span></span>
  <a href="/aaaaa/?page=2">2</a>
  <a href="/aaaaa/?page=3">3</a>
  <a href="/aaaaa/?page=4">4</a>
  <a href="/aaaaa/?page=5">5</a>
  <a href="/aaaaa/?page=6">6</a>
  <a href="/aaaaa/?page=7">7</a>
  <a href="/aaaaa/?page=8">8</a>
  <a href="/aaaaa/?page=9">9</a>
  <a href="/aaaaa/?page=10">10</a>
<span>...</span> <a href="/aaaaa/?page=10000">10000</a>

</body>
</html>


Русский язык по логике не должен влиять, так как теги то на английском.

Такой html даже Chrome не открывает! У Вас title не закрыт. Вы же говорили, что тестировали именно тот html, что я выложил?
...
Рейтинг: 0 / 0
25 сообщений из 169, страница 3 из 7
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / VBA и WEB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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