requests-html的r.html.find仅返回1条数据 如何获取指定数量多条结果
解决方案
requests-html 的 find() 方法不传 first=True 参数时,会返回所有匹配指定选择器的元素对象列表,你可以对列表做切片控制爬取数量,再遍历提取内容即可,示例代码如下:
# 1. 获取页面中所有匹配的评论标题元素 all_review_items = r.html.find('strong.reviews__item-title') # 2. 定义要爬取的评论数量,比如前3条 fetch_count = 3 # 3. 遍历切片后的列表提取文本 review_title_list = [] for item in all_review_items[:fetch_count]: review_title_list.append(item.text) # 也可以用列表推导式简化写法 review_title_list = [item.text for item in all_review_items[:3]]
如果运行后拿不到评论内容,说明该站点的评论是前端动态渲染生成的,你可以在调用find()前先执行渲染操作:
# 等待页面动态内容渲染完成,可选指定等待时间 r.html.render(sleep=2)
内容的提问来源于stack exchange,提问作者lanavargas2002
相关产品推荐
相关产品推荐

