Парсинг части кода из 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
Ответить
Сообщение Приветствую, просьба помочь с реализацией такого макроса, есть 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, вот та часть кода, где находится нужная таблица.
Kuzmich, вот та часть кода, где находится нужная таблица. net
Сообщение отредактировал net - Четверг, 26.03.2015, 13:55
Ответить
Сообщение Kuzmich, вот та часть кода, где находится нужная таблица. Автор - net Дата добавления - 26.03.2015 в 13:52
RAN
Дата: Четверг, 26.03.2015, 15:31 |
Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
[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
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение [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
Ответить
Сообщение Попробуйте так для ячейки 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
Ответить
Сообщение 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
Ответить
Сообщение Код должен быть в модуле того листа, где Html код Автор - Kuzmich Дата добавления - 26.03.2015 в 18:12
RAN
Дата: Четверг, 26.03.2015, 18:16 |
Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Kuzmich , не правильно. Правильно будет "Html код должен быть на листе"
Kuzmich , не правильно. Правильно будет "Html код должен быть на листе" RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение 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 до D34Kuzmich
Ответить
Сообщение Цитата
Нашел вариант 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
Ответить
Сообщение 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
Ответить
Сообщение Небольшой оффтоп по макросу, подскажите, как автоматизировать? чтобы диапазон в 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
Ответить
Сообщение что значит светить ссылки
Это значит показать хоть одну ссылку.Автор - wild_pig Дата добавления - 27.03.2015 в 18:17
RAN
Дата: Пятница, 27.03.2015, 19:09 |
Сообщение № 14
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Для того, чтобы съесть яблоко, не достаточно иметь веревочку от двери, за которую нужно дернуть, чтобы открыть дверь, за которой лежит яблоко. Нужно, как минимум, чтобы кто-то дернул. А уж после искать, у кого зубы есть.
Для того, чтобы съесть яблоко, не достаточно иметь веревочку от двери, за которую нужно дернуть, чтобы открыть дверь, за которой лежит яблоко. Нужно, как минимум, чтобы кто-то дернул. А уж после искать, у кого зубы есть. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Для того, чтобы съесть яблоко, не достаточно иметь веревочку от двери, за которую нужно дернуть, чтобы открыть дверь, за которой лежит яблоко. Нужно, как минимум, чтобы кто-то дернул. А уж после искать, у кого зубы есть. Автор - 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]
чтобы диапазон в Range("D4") и Range("C4") был указан в одной строчке вида D4-D44 и C4-C44?
ты это имел ввиду? [vba]Код
Range("D4:D44").ClearContents
[/vba]KSV
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
В 90% случаев ничего парсить не надо, ибо есть DOM. Осталось это понять =)
В 90% случаев ничего парсить не надо, ибо есть DOM. Осталось это понять =) nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук YM 41001156540584 / WM WMR R21924176233 https://github.com/nervgh/vba
Сообщение отредактировал nerv - Суббота, 28.03.2015, 18:38
Ответить
Сообщение В 90% случаев ничего парсить не надо, ибо есть DOM. Осталось это понять =) Автор - nerv Дата добавления - 28.03.2015 в 18:38