匹配web url与python正则表达式

时间:2016-07-03 17:36:29

标签: python regex

我正在尝试使用Python正则表达式从Web内容中添加额外的Web链接。这是我的python脚本

webUrlList = re.findall(r"(?<=<a href=\").+(.html|/)(?=\")", content)
print webUrlList

匹配的webUrlList就像:

['/', '.html', '/', '/', '/', '/',...] 

请帮我找出此脚本产生上述输出的原因。

目标weburl字符串示例:

<a href="http://ab.test.com/flower/1111027378112/purple/119735281586093.html"

<a href="/abcabcdef/coffee/su1/" 

2 个答案:

答案 0 :(得分:2)

如果您只是解析链接,并且您熟悉要解析的内容,那么以下正则表达式应该可以帮助您完成您之后所做的事情并且非常安全。

regex = re.compile(r'href="([^"]+)')
results = re.findall(regex, <CONTENT-HERE>)
  • href="消耗但不捕获文字字符href="
  • ([^"]+)会消耗并捕获任何不是引号的字符

使用您正在抓取的内容运行一些试验,并评估您是否需要在正则表达式中具有更多特异性。

答案 1 :(得分:1)

使用像BeautifulSoup这样的html解析器:

soup = BeautifulSoup(content, "html.parser")

print([a["href"] for a in soup.find_all("a", href=True)])

不要使用正则表达式来解析html