【爬虫】爬取旅行评论和评分

这篇具有很好参考价值的文章主要介绍了【爬虫】爬取旅行评论和评分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以马蜂窝“普达措国家公园”为例,其评论高达3000多条,但这3000多条并非是完全向用户展示的,向用户展示的只有5页,数了一下每页15条评论,也就是75条评论,有点太少了吧!

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

 因此想了个办法尽可能多爬取一些评论,根据我对爬虫爬取数据法律法规的相关了解,爬取看得到的数据是合法的,而在评论最开始的这个地方有对评论的分类,当然每个分类主题也是最多能看到5页内容,但是肯定会比我们被动的只爬取5页多很多内容,因此我们选择按主题分类去爬取评论。

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

点击上图中的全部,右键检查或者按下F12去定位“全部” 

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

 把这个元素收起来就可以看到如下图,这个<li></li>标签的列表里保存着分类名称、类型、id等,如果比较多的话可以利用selenium的XPATH自动获取之后,再套进代码里面,由于我只演示一个例子并且分类标签也不多,我就直接拿了这个列表放在代码里。

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

注意我们需要用到的是他的两个属性值:

data-type、data-catagory

我存放的方式:(代码标注的分类id)

data-type:a = [0,0,1,1,1,2,2,2,2,2,0]
data-catagory:b = [0,2,13,12,11,134700810,173942219,112047583,112968615,143853527,1]

注意这个顺序a[i]b[i]是按照图中框起来的<li></li>标签一一对应的,顺序不能错。

点击Network,按下Ctrl+R刷新一下

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

找到Name为poiCommentListApi?为首的(如下图),点击Headers,红线画出来的内容是代码中comment_url(代码标注①的地方),根据你自己需要的进行替换。

【爬虫】爬取旅行评论和评分,# 爬虫,爬虫 下滑可以看到Request Headers中的‘Referer’和‘User-agent’两个参数,根据你自己所需要的进行替换(代码标注的②和③)【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

 点击Payload,如果是下面这种情况你就点击一下左边的分类标签(任选一个),在Name列表中一直往下滑找到Name为poiCommentListApi?为首的(根据你的点击次数就会有多少个,从后往前找看看规律)

 【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

找到最后一个Name为poiCommentListApi?为首的,点击Payload,看一下这个params参数

所以对于同一个景点来说,变化的参数有:评论类别(由type、catagory决定)、页码(取值范围1-5)

 【爬虫】爬取旅行评论和评分,# 爬虫,爬虫

分析完之后就可以写代码了

🌹--<-<-<@美味的code👑 

import re
import time
import requests
import pandas as pd

comment_url = 'http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?'
requests_headers = {
    'Referer': 'https://www.mafengwo.cn/poi/3110.html',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'
}

# Comment categories
a = [0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 0]
b = [0, 2, 13, 12, 11, 134700810, 173942219, 112047583, 112968615, 143853527, 1]

# Iterate through ten categories of comments
for i in range(11):
    # Get comments from five pages for each category
    for num in range(1, 6):
        print('Fetching Page', num)
        requests_data = {
            'params': '{"poi_id":"3110","type":"%d","category":"%d","page":"%d","just_comment":1}' % (a[i], b[i], num)
        }
        response = requests.get(url=comment_url, headers=requests_headers, params=requests_data)
        
        if 200 == response.status_code:
            page = response.content.decode('unicode-escape', 'ignore').encode('utf-8', 'ignore').decode('utf-8')
            page = page.replace('\\/', '/')
            
            date_pattern = r'<a class="btn-comment _j_comment" title="Add Comment">Comment</a>.*?\n.*?<span class="time">(.*?)</span>'
            date_list = re.compile(date_pattern).findall(page)
            
            star_pattern = r'<span class="s-star s-star(\d)"></span>'
            star_list = re.compile(star_pattern).findall(page)
            
            comment_pattern = r'<p class="rev-txt">([\s\S]*?)</p>'
            comment_list = re.compile(comment_pattern).findall(page)
            
            best_comment = []
            for num in range(0, len(date_list)):
                date = date_list[num]
                star = star_list[num]
                comment = comment_list[num]
                comment = str(comment).replace('&nbsp;', '')
                comment = comment.replace('<br>', '')
                comment = comment.replace('<br />', "")
                comment = comment.replace('\n', "")
                comment = comment.replace("【", "")
                comment = comment.replace("】", "")
                comment = comment.replace("~", "")
                comment = comment.replace("*", "")
                comment = comment.replace('<br />', '')
                best_comment.append(comment)
            df = pd.DataFrame({'date': date_list, 'rating': star_list, 'comment': comment_list})
            df['comment'] = best_comment
            df.to_csv('mafengwo.csv', mode='a', encoding='gb18030', index=False, header=None)
            print('Write successful')
        else:
            print("Fetch failed")

既然都看到這裏了,不如点个关注+收藏再走咯!? 文章来源地址https://www.toymoban.com/news/detail-649422.html

到了这里,关于【爬虫】爬取旅行评论和评分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫爬取top250中排名、评分、导演等展示可视化界面

    源代码+4千字报告     需要源代码+数据库+可视化+数据+4千字报告加我qq    

    2024年02月13日
    浏览(40)
  • 爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

    以豆瓣当下实时热门电影《热烈》作为分析对象 环境: Python3(Anaconda3) PyCharm Chrome浏览器 主要模块: BeautifulSoup requests pymysql 一.概括 目标:获得电影《热烈》的用户观影习惯数据 代码概括: 1.使用requests和bs4爬取电影《热烈》所有短评长评及其用户                           

    2024年02月14日
    浏览(46)
  • 【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

    您好,我是 @马哥python说,一枚10年程序猿。 之前,我分享过一些B站的爬虫: 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Python爬虫案例】用python爬哔哩哔哩搜索结果 【爬虫+情感判定+Top10高频词+词云图】\\\"谷爱凌\\\"热门弹幕python舆情分析 但我学习群中小伙伴频繁讨论

    2024年02月08日
    浏览(44)
  • 【Python】爬虫练习-爬取豆瓣网电影评论用户的观影习惯数据

    目录 前言 一、配置环境 1.1、 安装Python 1.2、 安装Requests库和BeautifulSoup库 1.3.、安装Matplotlib 二、登录豆瓣网(重点) 2.1、获取代理 2.2、测试代理ip是否可用 2.3、设置大量请求头随机使用 2.4、登录豆瓣网 三、爬取某一部热门电影数据 3.1、爬取全部长、短评论 3.2、获取用户

    2024年02月09日
    浏览(47)
  • 【爬虫GUI】YouTube评论采集软件,突破反爬,可无限爬取!

    目录 一、背景介绍 1.1 软件说明 1.2 效果演示 二、科普知识 2.1 关于视频id 2.2 关于评论时间 三、爬虫代码 3.1 界面模块 3.2 爬虫模块 3.3 日志模块 四、获取源码及软件 你好,我是@马哥python说 ,一名10年程序猿。 最近我用python开发了一个GUI桌面软件,作用是爬取YouTube指定视频

    2024年02月11日
    浏览(41)
  • 用python语言爬虫爬取微博评论--上--初步爬虫(超详细版,大学生不骗大学生)

    目录 一、找到页面  二、学会使用检查元素 2.1 打开检查元素界面 2.2 找到所有评论所在的位置 2.2.1 搜索评论 2.2.2  找到data表 三、基础部分代码实现 ​​​​​​​ 全部已经更完(下面两个链接是中和下) https://blog.csdn.net/m0_68325382/article/details/137234661?spm=1001.2014.3001.5502 爬

    2024年04月10日
    浏览(56)
  • ASO优化之Google Play评分评论的重要性

    应用程序 的 成果 不仅仅是拥有功能齐全且无错误的产品 , 评分和评论会影响 谷歌应用 商店的排名算法 , 好评和差评都会影响应用在商店中的排名 , 这是关于与用户建立信任 的 一个环节 。 1、积极主动地管理评论。 定期监控评论、解决用户问题以及根据反馈实施 一些

    2024年02月06日
    浏览(41)
  • Python爬取豆瓣电影Top 250,豆瓣电影评分可视化,豆瓣电影评分预测系统

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月21日
    浏览(76)
  • scrapy框架简单实现豆瓣评分爬取案例

    豆瓣网址:https://movie.douban.com/top250 在spiders目录下创建一个spider_one.py文件,可以随意命名,该文件主要是让我们进行数据爬取的。 运行命令: 注意末尾的域名是用来设置爬取的范围的 spider_one.py代码如下 放开useragent,配置好对应的值 关闭robots协议 放开管道限制 在items.py文

    2024年02月14日
    浏览(32)
  • 最新最全的校园跳蚤小程序,二手商城小程序,二手书城小程序,带五星评分功能,发布商品,模糊搜索,评论,校园论坛功能

    从今天开始带领大家实现一款云开发版的校园二手商城小程序 小程序原生框架 css JavaScript 云开发Cms内容管理系统 web网页 小程序云开发 云函数 云开发数据库(基于MongoDB) 云存储 云开发数据库是一个既可以在小程序端操作,也可以在云函数中操作的json类型的非关系型数据库

    2024年02月01日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包