多用途解决方案:
image_re = re.compile(r"""
(?P<img_tag><img)\s+ #tag starts
[^>]*? #other attributes
src= #start of src attribute
(?P<quote>["''])? #optional open quote
(?P<image>[^"'>]+) #image file name
(?(quote)(?P=quote)) #close quote
[^>]*? #other attributes
> #end of tag
""", re.IGNORECASE|re.VERBOSE) #re.VERBOSE allows to define regex in readable format with comments
image_tags = []
for match in image_re.finditer(content):
image_tags.append(match.group("img_tag"))
#print found image_tags
for image_tag in image_tags:
print image_tag
正如您在正则表达式定义中看到的那样,它包含
(?P<group_name>regex)
group_name
它允许您按而不是按数字访问找到的组。这是为了可读性。因此,如果要显示标签的所有src
属性img
,只需编写:
for match in image_re.finditer(content):
image_tags.append(match.group("image"))
此 image_tags 列表之后将包含图像标签的 src。
此外,如果您需要解析 html,那么有些工具就是专门为此目的而设计的。例如,它是lxml,它使用xpath表达式。