这是我第一次发帖,所以请保持温和。 我正在从旅行顾问那里提取数据。评论用图表来解释。
<span class="ui_bubble_rating bubble_40"></span>
正如你所看到的,最后有一个代表4颗星的“40”。 “20”(2星)等也是如此......
如何获取“ui_bubble_rating bubble_40”? 提前谢谢你......
答案 0 :(得分:0)
我不确定这是否是最有效的方法,但这就是我的方法:
tags = soup.find_all(class=re.compile("bubble_\d\d"))
tags
变量将包含页面中与正则表达式bubble_\d\d
匹配的每个标记。之后,您只需要提取数字,如下所示:
stars = tags[0].split("_")[1]
如果您想要花哨,可以使用列表推导从每个标签中提取数字:
stars = [tag.split("_")[1] for tag in tags]
答案 1 :(得分:0)
我不确定你要抓什么样的数据, 但是你可以像这样获得那个span标签(我测试了它并留下了一些打印件):
from urllib import urlopen
from bs4 import BeautifulSoup
import re
html = urlopen("YOUR_REVIEWS_URL")
bs1=BeautifulSoup(html, 'lxml')
for s in bs1.findAll("span", {"class":"ui_bubble_rating bubble_40"}):
print(s)
更通用的方式(刮掉所有评级(bubble_ [0-9] {2})):
toFind = re.compile("(bubble_[0-9]{2})+")
for s in bs1.findAll("span", {"class":toFind}):
print(s)
希望能回答你的问题