Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Парсинг части кода из html страницы по id в ячейку excel - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Парсинг части кода из html страницы по id в ячейку excel
net Дата: Четверг, 26.03.2015, 12:19 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Приветствую,

просьба помочь с реализацией такого макроса,

есть 30 ссылок в 30 отдельных ячейках, к примеру с D4 до D34, нужно сделать макрос, который будет заходить на каждую ссылку по очереди, затем парсить html код и искать там поля в коде со значениями <li id="NameField">, вставлять содержимое этого поля в ячейку E4-E34 соответственно и затем вытаскивать оттуда же строку с кодом <li id="JobTitleField"> и вставлять то содержимое в ячейку F4-F34.

Как можно реализовать такой парсинг части кода и вставку в соответствующее поле по определенному условию?

Спасибо!
 
Ответить
СообщениеПриветствую,

просьба помочь с реализацией такого макроса,

есть 30 ссылок в 30 отдельных ячейках, к примеру с D4 до D34, нужно сделать макрос, который будет заходить на каждую ссылку по очереди, затем парсить html код и искать там поля в коде со значениями <li id="NameField">, вставлять содержимое этого поля в ячейку E4-E34 соответственно и затем вытаскивать оттуда же строку с кодом <li id="JobTitleField"> и вставлять то содержимое в ячейку F4-F34.

Как можно реализовать такой парсинг части кода и вставку в соответствующее поле по определенному условию?

Спасибо!

Автор - net
Дата добавления - 26.03.2015 в 12:19
Kuzmich Дата: Четверг, 26.03.2015, 13:32 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Покажите пример html кода
 
Ответить
СообщениеПокажите пример html кода

Автор - Kuzmich
Дата добавления - 26.03.2015 в 13:32
net Дата: Четверг, 26.03.2015, 13:52 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich, вот та часть кода, где находится нужная таблица.



Сообщение отредактировал net - Четверг, 26.03.2015, 13:55
 
Ответить
СообщениеKuzmich, вот та часть кода, где находится нужная таблица.


Автор - net
Дата добавления - 26.03.2015 в 13:52
RAN Дата: Четверг, 26.03.2015, 15:31 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
objRegExp.Global = True
objRegExp.Pattern = "<li id="NameField"><a href="(.*?)"[\s\S]*?<li id="JobTitleField">(.*?)<\/li>?"
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
objRegExp.Global = True
objRegExp.Pattern = "<li id="NameField"><a href="(.*?)"[\s\S]*?<li id="JobTitleField">(.*?)<\/li>?"
[/vba]

Автор - RAN
Дата добавления - 26.03.2015 в 15:31
Kuzmich Дата: Четверг, 26.03.2015, 15:53 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Попробуйте так для ячейки D4, цикл по остальным ячейкам сделайте сами
[vba]
Код

Sub Parsing()
Dim RegExp As Object
Dim colMatches As Object
     Set RegExp = CreateObject("vbscript.regexp")
     With RegExp
       .MultiLine = False
       .Global = True
       .IgnoreCase = True
       .Pattern = "<li id=""NameField"">(.*?)</li>"     ' маска
             Cells(4, 5) = .Execute(Cells(4, 4))(0)
       .Pattern = "<li id=""JobTitleField"">(.*?)</li>" ' маска
             Cells(4, 6) = .Execute(Cells(4, 4))(0)
     End With
End Sub
[/vba]
 
Ответить
СообщениеПопробуйте так для ячейки D4, цикл по остальным ячейкам сделайте сами
[vba]
Код

Sub Parsing()
Dim RegExp As Object
Dim colMatches As Object
     Set RegExp = CreateObject("vbscript.regexp")
     With RegExp
       .MultiLine = False
       .Global = True
       .IgnoreCase = True
       .Pattern = "<li id=""NameField"">(.*?)</li>"     ' маска
             Cells(4, 5) = .Execute(Cells(4, 4))(0)
       .Pattern = "<li id=""JobTitleField"">(.*?)</li>" ' маска
             Cells(4, 6) = .Execute(Cells(4, 4))(0)
     End With
End Sub
[/vba]

Автор - Kuzmich
Дата добавления - 26.03.2015 в 15:53
net Дата: Четверг, 26.03.2015, 17:40 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Kuzmich,

Ругается на строчки:
Код
Cells(4, 5) = .Execute(Cells(4, 4))(0)
Cells(4, 6) = .Execute(Cells(4, 4))(0)

Invalid procedure call or argument. Может нужно принудительно указать ячейку? Нашел вариант Range("D4"), но на него тоже ругается.

А здесь:
Код
objRegExp.Global = True
objRegExp.Pattern = "<li id="NameField"><a href="(.*?)"[\s\S]*?<li id="JobTitleField">(.*?)<\/li>?"

Во второй строчке syntax error.
 
Ответить
СообщениеKuzmich,

Ругается на строчки:
Код
Cells(4, 5) = .Execute(Cells(4, 4))(0)
Cells(4, 6) = .Execute(Cells(4, 4))(0)

Invalid procedure call or argument. Может нужно принудительно указать ячейку? Нашел вариант Range("D4"), но на него тоже ругается.

А здесь:
Код
objRegExp.Global = True
objRegExp.Pattern = "<li id="NameField"><a href="(.*?)"[\s\S]*?<li id="JobTitleField">(.*?)<\/li>?"

Во второй строчке syntax error.

Автор - net
Дата добавления - 26.03.2015 в 17:40
Kuzmich Дата: Четверг, 26.03.2015, 18:12 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Код должен быть в модуле того листа, где Html код
 
Ответить
СообщениеКод должен быть в модуле того листа, где Html код

Автор - Kuzmich
Дата добавления - 26.03.2015 в 18:12
RAN Дата: Четверг, 26.03.2015, 18:16 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Kuzmich, не правильно.
Правильно будет "Html код должен быть на листе" :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеKuzmich, не правильно.
Правильно будет "Html код должен быть на листе" :)

Автор - RAN
Дата добавления - 26.03.2015 в 18:16
wild_pig Дата: Четверг, 26.03.2015, 23:26 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
net, ссылки светить будем?
 
Ответить
Сообщениеnet, ссылки светить будем?

Автор - wild_pig
Дата добавления - 26.03.2015 в 23:26
Kuzmich Дата: Пятница, 27.03.2015, 00:05 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 715
Репутация: 157 ±
Замечаний: 0% ±

Excel 2003
Цитата
Нашел вариант Range("D4")

Лучше Cells(4,4), вам ведь нужно делать цикл от D4 до D34
 
Ответить
Сообщение
Цитата
Нашел вариант Range("D4")

Лучше Cells(4,4), вам ведь нужно делать цикл от D4 до D34

Автор - Kuzmich
Дата добавления - 27.03.2015 в 00:05
net Дата: Пятница, 27.03.2015, 08:31 | Сообщение № 11
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
wild_pig, что значит светить ссылки? я совсем профан в синтаксисе, видимо проще будет делать запрос с sql сервера чем парсить часть кода :-) попробую другим путем. Спасибо всем за информацию.
 
Ответить
Сообщениеwild_pig, что значит светить ссылки? я совсем профан в синтаксисе, видимо проще будет делать запрос с sql сервера чем парсить часть кода :-) попробую другим путем. Спасибо всем за информацию.

Автор - net
Дата добавления - 27.03.2015 в 08:31
net Дата: Пятница, 27.03.2015, 18:08 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Небольшой оффтоп по макросу, подскажите, как автоматизировать? чтобы диапазон в Range("D4") и Range("C4") был указан в одной строчке вида D4-D44 и C4-C44?

Спасибо!

[vba]
Код
Sub Macro4()
'
Range("D4").ClearContents
Range("D4").FormulaR1C1 = Range("R3") & "7" & Range("C4") & Range("R4")

Range("D5").ClearContents
Range("D5").FormulaR1C1 = Range("R3") & "7" & Range("C5") & Range("R4")

Range("D6").ClearContents
Range("D6").FormulaR1C1 = Range("R3") & "7" & Range("C6") & Range("R4")

Range("D7").ClearContents
Range("D7").FormulaR1C1 = Range("R3") & "7" & Range("C7") & Range("R4")

End Sub
[/vba]
 
Ответить
СообщениеНебольшой оффтоп по макросу, подскажите, как автоматизировать? чтобы диапазон в Range("D4") и Range("C4") был указан в одной строчке вида D4-D44 и C4-C44?

Спасибо!

[vba]
Код
Sub Macro4()
'
Range("D4").ClearContents
Range("D4").FormulaR1C1 = Range("R3") & "7" & Range("C4") & Range("R4")

Range("D5").ClearContents
Range("D5").FormulaR1C1 = Range("R3") & "7" & Range("C5") & Range("R4")

Range("D6").ClearContents
Range("D6").FormulaR1C1 = Range("R3") & "7" & Range("C6") & Range("R4")

Range("D7").ClearContents
Range("D7").FormulaR1C1 = Range("R3") & "7" & Range("C7") & Range("R4")

End Sub
[/vba]

Автор - net
Дата добавления - 27.03.2015 в 18:08
wild_pig Дата: Пятница, 27.03.2015, 18:17 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 518
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
что значит светить ссылки

Это значит показать хоть одну ссылку.
 
Ответить
Сообщение
что значит светить ссылки

Это значит показать хоть одну ссылку.

Автор - wild_pig
Дата добавления - 27.03.2015 в 18:17
RAN Дата: Пятница, 27.03.2015, 19:09 | Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Для того, чтобы съесть яблоко, не достаточно иметь веревочку от двери, за которую нужно дернуть, чтобы открыть дверь, за которой лежит яблоко. Нужно, как минимум, чтобы кто-то дернул. А уж после искать, у кого зубы есть.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДля того, чтобы съесть яблоко, не достаточно иметь веревочку от двери, за которую нужно дернуть, чтобы открыть дверь, за которой лежит яблоко. Нужно, как минимум, чтобы кто-то дернул. А уж после искать, у кого зубы есть.

Автор - RAN
Дата добавления - 27.03.2015 в 19:09
KSV Дата: Пятница, 27.03.2015, 19:42 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
чтобы диапазон в Range("D4") и Range("C4") был указан в одной строчке вида D4-D44 и C4-C44?

ты это имел ввиду?
[vba]
Код
Range("D4:D44").ClearContents
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
чтобы диапазон в Range("D4") и Range("C4") был указан в одной строчке вида D4-D44 и C4-C44?

ты это имел ввиду?
[vba]
Код
Range("D4:D44").ClearContents
[/vba]

Автор - KSV
Дата добавления - 27.03.2015 в 19:42
nerv Дата: Суббота, 28.03.2015, 18:38 | Сообщение № 16
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

В 90% случаев ничего парсить не надо, ибо есть DOM.
Осталось это понять =)


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Суббота, 28.03.2015, 18:38
 
Ответить
СообщениеВ 90% случаев ничего парсить не надо, ибо есть DOM.
Осталось это понять =)

Автор - nerv
Дата добавления - 28.03.2015 в 18:38
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!