我对网络刮取非常陌生,最近开始在Yelp上刮取一家餐馆。我在提取用户的评论评级时遇到了麻烦,每次尝试,似乎都没有匹配项。
rating = review.find('img', attrs={'class': 'offscreen__373c0__1KofL'}).get('alt')
rating_list = re.findall('\d+', rating)
if len(rating_list) > 0:
rating_float = float(rating_list[0])
print(rating_float)
else:
print("No matches have been found")
是我的"review.find('img', attrs={'class': 'offscreen__373c0__1KofL'}).get('alt')"
错了吗?
我已经添加了 selenium 作为评论指出,但它仍然是来短。
URL链接:https://www.yelp.com/biz/el-farolito-san-francisco-2?osq=Mexican%20Food
网址等级:src=”https://s3-media0.fl.yelpcdn.com/assets/public/stars_v2.yji-52d3d7a328db670d4402843cbddeed89.png“
还有别的建议吗?
谢谢你。
1条答案
按热度按时间62lalag41#
您可以尝试使用第三方API,如SerpApi的Yelp Reviews API,这是一个免费的付费API。它将绕过来自Google的屏蔽(包括验证码),无需创建解析器和维护它。
在API的帮助下,我们可以进行分页搜索以获得所有可能的结果。
为此,我们首先需要找到ID的餐厅列表:
然后,我们使用“place_ids”参数遍历所有餐厅,并使用
while
循环提取所有评论:在联机IDE中检查完整代码。
输出示例:
有一篇Scrape Yelp Reviews Results with SerpApi and Python的博客文章,你可以从中得到更多的代码解释。
免责声明我为SerpApi工作。