gpt4 book ai didi

python - 在 BeautifulSoup 标签上使用正则表达式

转载 作者:行者123 更新时间:2023-12-01 05:55:00 25 4
gpt4 key购买 nike

我最近一直在使用 beautiful soup 4,并且一直在努力理解其中的一些基础知识(出于某种原因,我对 bs3.x 非常满意)。因此,例如,让我们从做一些简单的事情开始,例如:

data=soup.find_all('h2')

这给我带来了类似的东西:

<h2><a href=\"/accurate-data/210-0023.prd?pageLevel=&amp;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=&amp;skuId=210-0023\">more-accurate-data</a></h2>"""

然后使用上面的正则表达式,一切正常。我想知道为什么 bs4 生成的“标签”类型似乎不可正则表达式。现在我觉得也许我在做一些愚蠢的事情,或者也许 bs3.x 和 bs4 之间发生了一些我不知道的变化。对此的任何帮助将不胜感激。谢谢。

最佳答案

您应该尝试查看字符串的repr:

>>> a=r"""<h2><a href=\"/accurate-data/210-0023.prd?pageLevel=&amp;skuId=210-0023\">more-accurate-data</a></h2>"""
>>> print repr(a)
'<h2><a href=\\"/accurate-data/210-0023.prd?pageLevel=&amp;skuId=210-0023\\">more-accurate-data</a></h2>'

正则表达式适用于此表示:

>>> regex = re.compile(r"""<h2><a href=\\"/accurate(.*?)\\">""")
>>> regex.match(a)
<_sre.SRE_Match object at 0x20fbf30>

问题是 beautiful soup 的结果是不同的,因为你没有打印它的 repr。处理正则表达式时,最好检查所涉及字符串的 repr 以避免类似的情况。

关于python - 在 BeautifulSoup 标签上使用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13010659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com