某些HTML链接的正则表达式

时间:2016-06-06 08:56:36

标签: python regex

EDOT:你们是对的,bs4好多了,已经开始使用它了,它更直观,实际上找到了链接 虽然我仍然在积分上苦苦哈哈 非常感谢你

看了一眼,这似乎不在其他帖子中

所以我很确定我可以使用正则表达式,因为这个html页面中的15个链接定义相当好,我认为,这是一个包含15个产品链接的亚马逊页面,我想要这些链接  输入就是这个

<a href="\n\n\n\n\n\n https://www.amazon.co.uk/Nikon-Coolpix-L340-Bridge-Camera/dp/B00THKEKEQ/ref=zg_bs_560836_2&#10;">Nikon Coolpix L340 Bridge Camera - Bl...</a>

我试过了

import re

links = re.findall(r'^(/n/n/n/n/n/n).(")', page)

哪个不行,有什么想法?

2 个答案:

答案 0 :(得分:0)

使用下面的正则表达式:

s = """<a href="\n\n\n\n\n\n https://www.amazon.co.uk/Nikon-Coolpix-L340-Bridge-Camera/dp/B00THKEKEQ/ref=zg_bs_560836_2&#10;">Nikon Coolpix L340 Bridge Camera - Bl...</a>"""

re.findall('(?<=\n\n\n\n\n\n)(.*?)"', s)

以前的regexp在字符串的开头寻找\n...匹配,而不是在字符串中间的\n和样本字符串中的情况。

答案 1 :(得分:0)

这也可行。 正则表达式并不关心\ n,只是假设链接以http

开头
links = re.findall('http.*(?=">)', page)

或者抓住整个<a>标签并从捕获组中获取网址?

links = re.findall('<a href="(?:\\n)*(.*)".*>.*<\/a>', page)