【发布时间】:2012-10-12 05:12:49
【问题描述】:
我最近一直在使用美丽的汤 4,我一直在努力理解这方面的一些基础知识(出于某种原因,我对 bs3.x 非常满意)。因此,例如,让我们从做一些简单的事情开始,例如:
data=soup.find_all('h2')
这给我带来了类似的东西:
<h2><a href=\"/accurate-data/210-0023.prd?pageLevel=&skuId=210-0023\">more-accurate-data</a></h2>
这很好。但是当我想对上面的字符串进行正则表达式时,使用一些类似的东西(假设上面存储在“temp”中):
t=str(re.compile(r"""<h2><a href=\\"/accurate(.*?)\\">""").search(str(temp)).group(1))
我明白了:
AttributeError: 'NoneType' object has no attribute 'group'
我觉得很奇怪 - 因为,当我在 python 解释器上执行时,类似:
k=r"""<h2><a href=\"/accurate-data/210-0023.prd?pageLevel=&skuId=210-0023\">more-accurate-data</a></h2>"""
然后使用上面的正则表达式,一切正常。我想知道为什么 bs4 生成的“标签”类型似乎不可正则表达式。现在我觉得也许我在做一些愚蠢的事情,或者在我不知道的 bs3.x 和 bs4 之间发生了一些变化。对此的任何帮助将不胜感激。谢谢。
【问题讨论】:
-
您在 BS4 正则表达式中有
<h3>而在其他任何地方都有<h2>是一个错字,对吧? -
@PedroRomano 是的,这是一个错字 - 很抱歉 - 我现在已经更正了。
-
你能显示BS给出的结果的
repr吗? -
我会用 repr 输出回复你。
-
@Bakuriu:我已经使用 repr 输出找出了问题所在。这是我的错误——我以前不知道 repr 命令。您能否将其发布为答案,我很乐意接受它作为正确答案。
标签: python regex python-2.7 beautifulsoup