在python中,如何使用regex捕获<a href标记中的url?

2024-04-18 04:35:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用Python制作一个正则表达式,它在一个:

<a href tag

例如,如果我这样做:

<a href="http://www.simplyrecipes.com/recipes/broccoli_slaw_with_cranbery_orange_dressing/" n    title="Permalink to Broccoli Slaw with Cranberry Orange Dressing" rel="bookmark"><img    width="520" height="347" 

我需要抓住这个表达:

<a href="http://www.simplyrecipes.com/recipes/broccoli_slaw_with_cranbery_orange_dressing/" 

我就是这么做的:

^<a href="http://www(???what to put in here????)"$

但是,我不知道如何将www之后的表达式中必须包含但没有特殊处理的部分进行转换。你知道吗

提前感谢您的启迪!你知道吗


Tags: tocomhttptitletagwwwwithhref
3条回答

使用import re

urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', url)

所有不是"[^"]

所以你可以把: [^"]*"

获得: '<a href="[^"]*"'

你很快就会发现不是所有的url都以www开头,而且很多url甚至都不是以http://开头的。下面是如何在链接的href属性中提取allurl的方法:匹配<a href=后面引号中的所有内容。在HTML标记中的不同位置使用空格是合法的,这会使事情变得有点复杂:

matchobj = re.search(r'<\s*a\s+href\s*=\s*"([^"]*)', text, re.IGNORECASE)
url = matchobj.group(1)

这还将获得相对的url和http以外的其他协议。如果您对所有内容都不感兴趣,那么在提取结果之后对其进行排序就更容易了。你知道吗

相关问题 更多 >