this is the tag im looking to find with the below regex '<span itemprop="price">34.97</span>'
matches = re.findall(r'<span itemprop="price">\$(\d+)</span>', html)
以上仅显示了尝试,没有$
我希望在此示例中看到价格34.97,但是当我运行代码时,这是返回的值(不返回结果)
最高价:¥ 0 最低价格:$ 0 200 []
答案 0 :(得分:0)
您正在尝试捕获34.97
\ d +不代表美元和美分之间的时间段。
尝试: (\ d +。\ d +)
\d+ (one or more digit)
\. (escaped . character so it captures one period)
\d+ (one or more digits)
是你的朋友!
答案 1 :(得分:0)
使用此正则表达式demo
<span itemprop=\"price\">(\d*\.?\d+)</span>
它考虑小数和数字
如果您真的不在乎跨度是多少,这里是它的正则表达式demo2
<span itemprop=\"price\">([^<]+)</span>
根据re.findall
的需要随意调整它,因为它将返回整个跨度,因此,如果您只想要数字而不是整个跨度,则可能需要在此正则表达式中进行正向和反向查找。但这取决于您。
答案 2 :(得分:0)
以上两个选项和建议均有效,但经过一些测试,我们发现在某些情况下标签中没有数字值,因此选择了最后一个建议 ([^ <] +)
这似乎可以立即捕获这些实例,并将在需要时进行调整。我们正在构建概念蜘蛛,因此将对我们的测试和演示功能起作用。