Как извлечь значения атрибута id элемента из HTML - PullRequest
0 голосов
/ 12 декабря 2008

Я пытаюсь решить накладные расходы на автоматическое именование серверных элементов управления ASP.NET. У меня есть страница, которая содержит 7000 строк HTML-кода, представленного сотнями вложенных элементов управления ASP.NET, многие из которых имеют атрибуты id / name, длина которых составляет сотни символов.

В идеале мне хотелось бы получить что-то, что извлекало бы каждое значение атрибута HTML, начинающееся с "ctl00", в список. Функция поиска регулярных выражений в Notepad ++ была бы идеальной, если бы я только знал, каким должно быть регулярное выражение?

Например, если HTML-код:

Я бы хотел, чтобы результат был примерно таким:
имя = "ctl00 $ Header $ Поиск $ Ключевые слова"
Более расширенный поиск может также включать имя элемента (например, тип элемента управления):
input | name = "ctl00 $ Header $ Search $ Keywords"

Чтобы справиться с атрибутами Id и Name, я просто перезапущу поиск в поисках Id вместо Name (т.е. мне не нужно что-то, что будет искать оба одновременно).

Окончательным результатом будет отчет Excel, в котором будет указано количество серверных элементов управления на странице и длина имени каждого из них, возможно, отсортированных по типу элемента управления.

Ответы [ 4 ]

1 голос
/ 12 декабря 2008

Быстро и грязно:

Поиск

\w+\s*=\s*"ctl00[^"]*"

Это будет соответствовать любому тексту, который выглядит как атрибут, например name="ctl00test" или attr = "ctl00longer text". Он не будет проверять, действительно ли это происходит в теге HTML - это немного сложнее сделать и, возможно, не нужно? Он также не будет проверять экранированные кавычки в имени тега. Как обычно с регулярными выражениями, сложность зависит от того, что именно вы хотите сопоставить и как выглядит ваш вклад ...

0 голосов
/ 16 сентября 2010

Отвечая на мой собственный вопрос, самый простой способ сделать это - использовать BeautifulSoup, синтаксический анализатор Python «грязный HTML», чей слоган:

"Вы не написали эту ужасную страницу. Вы просто пытаетесь извлечь из нее какие-то данные. Прямо сейчас, вас не волнует, как должен выглядеть HTML. Также не работает этот парсер . "

Это работает и доступно здесь - http://crummy.com/software/BeautifulSoup

0 голосов
/ 12 декабря 2008

Я предлагаю xpath, как в этом вопросе

0 голосов
/ 12 декабря 2008

"7000"? «Сотня»? Дорогой Бог.

Поскольку вы просто просматриваете источник в текстовом редакторе, попробуйте это ... / (id | name) = "ct [^"] * "/

...