在 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:<br><br>4.9 out of 5 stars<br>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:<br><br>4.9 out of 5 stars<br>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
抓取新手。我正在尝试在引号和
标记内抓取一个元素。如果我输入:
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:<br><br>4.9 out of 5 stars<br>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:<br><br>4.9 out of 5 stars<br>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