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 ">Nikon Coolpix L340 Bridge Camera - Bl...</a>
我试过了
import re
links = re.findall(r'^(/n/n/n/n/n/n).(")', page)
哪个不行,有什么想法?
答案 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 ">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)