在 span 标签的引号内抓取

Scraping within quotes in span tag

抓取新手。我正在尝试在引号和
标记内抓取一个元素。如果我输入:

for rating in flex.find_all("div", class_="article-seller-rating m-t-1"):
     print(rating)

我得到以下信息:

<div class="article-seller-rating m-t-1">
<div>
<span class="rating relative js-popover pointer" data-container="body" data-content="Buyers rated this dealer:&lt;br&gt;&lt;br&gt;4.9 out of 5 stars&lt;br&gt;Number of reviews: 18" data-placement="top" data-title="Reviews">
<More un-important stuff here>
</span></div>
</div>

我要提取2个元素:

4.9(评分),

18(评论数)

非常感谢任何帮助!

我找到了解决办法。

我也 运行 遇到一个问题,有时这些值中的一个或两个都缺失,我想指出这一点,因为我正在将列表编译为数据。

I select "data-content" 元素中的所有数字,使用 [r'\d+(?:.\d+)?'] 作为第一个值(带小数位)和[r'\d+(?:,\d+)?'] 用逗号表示第二个值。这也设法跳过了“满分 5 星”。 “except IndexError:”处理缺失的时候。

for rating in flex.find_all("div", class_="article-seller-rating m-t-1"):

try:
    starrate = rating.select('span')[0].get("data-content")

    stars = re.findall(r'\d+(?:\.\d+)?',starrate)
    s=stars[0]
    master_list[c].append(s)

    ratings = re.findall(r'\d+(?:\,\d+)?',starrate)
    r=ratings[3]  
    master_list[c].append(r)

except IndexError:

使用re

import re

text = '''<div class="article-seller-rating m-t-1">
<div>
<span class="rating relative js-popover pointer" data-container="body" data-content="Buyers rated this dealer:&lt;br&gt;&lt;br&gt;4.9 out of 5 stars&lt;br&gt;Number of reviews: 18" data-placement="top" data-title="Reviews">
<More un-important stuff here>
</span></div>
</div>'''



numbers = re.findall(r"[-+]?\d*\.\d+|\d+",text)
print(numbers[1])
print(numbers[-1])

输出

4.9
18