Оптимизация ссылок на Python для соответствия регулярному выражению - PullRequest
0 голосов
/ 31 мая 2010

У меня есть регулярное выражение, links = re.compile('<a(.+?)href=(?:"|\')?((?:https?://|/)[^\'"]+)(?:"|\')?(.*?)>(.+?)</a>',re.I).findall(data)

, чтобы найти ссылки в каком-то html, на определенный html уходит много времени, какой-либо совет по оптимизации?

Тот, который задыхаетсяis http://freeyourmindonline.net/Blog/

Ответы [ 3 ]

2 голосов
/ 31 мая 2010

Я бы предложил использовать BeautifulSoup для этой задачи.

2 голосов
/ 31 мая 2010

Есть ли причина, по которой вы не используете анализатор html?Используя что-то вроде BeautifulSoup, вы можете получить все ссылки без использования такого ужасного регулярного выражения.

0 голосов
/ 31 мая 2010

Как насчет более прямой обработки href's?

re_href = re.compile(r"""<\s*a(?:[^>]+?)href=("[^"]*(\\"[^"]*)*"|'[^']*(\\'[^']*)*'|[^\s>]*)[^>]*>""", re.I)

Это занимает около 0,007 секунды по сравнению с findall, что на моем компьютере занимает 38,694 секунды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...