我有一个正则表达式links = re.compile('<a(.+?)href=(?:"|\')?((?:https?://|/)[^\'"]+)(?:"|\')?(.*?)>(.+?)</a>',re.I).findall(data)
在某些html中查找链接,在某些html,任何优化建议上花了很长时间?
答案 0 :(得分:2)
你有没有理由不使用html解析器?使用像BeautifulSoup这样的东西,你可以获得所有链接而不使用像这样丑陋的正则表达式。
答案 1 :(得分:2)
我建议使用BeautifulSoup来执行此任务。
答案 2 :(得分:0)
如何直接处理href?
re_href = re.compile(r"""<\s*a(?:[^>]+?)href=("[^"]*(\\"[^"]*)*"|'[^']*(\\'[^']*)*'|[^\s>]*)[^>]*>""", re.I)
与你的findall
比较大约需要0.007秒,而我的电脑需要38.694秒。