python 爬取马蜂窝景点翻页文字评论的实现


Posted in Python onJanuary 20, 2020

使用Chrome、python3.7、requests库和VSCode进行爬取马蜂窝黄鹤楼的文字评论(http://www.mafengwo.cn/poi/5426285.html)。

首先,我们复制一段评论,查看网页源代码,按Ctrl+F查找,发现没有找到评论,说明评论内容不在http://www.mafengwo.cn/poi/5426285.html页面。

python 爬取马蜂窝景点翻页文字评论的实现

回到页面,划到评论列表,右键检查,选择Network,然后点击后一页翻页,观察Network里的变化,我们要爬的文件就在下面的某个文件里(主要找XHR和JS两个模块)。选择Preview可以更好的让我们寻找我们想要的文件,然后选择Headers找到我们要爬的url。

python 爬取马蜂窝景点翻页文字评论的实现

python 爬取马蜂窝景点翻页文字评论的实现

经过分析我们找到要爬取的url是http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?callback=jQuery18102698237405245767_1579401525334¶ms=%7B%22poi_id%22%3A%225426285%22%2C%22page%22%3A2%2C%22just_comment%22%3A1%7D&_ts=1579402072160&sn=20e98d65a0&=1579402072161
然而点进去是这样的

python 爬取马蜂窝景点翻页文字评论的实现

这个时候对比一下这两个页面的Request Headers,发现原页面多了个Refer参数

原页面

python 爬取马蜂窝景点翻页文字评论的实现

python 爬取马蜂窝景点翻页文字评论的实现

然后看一下请求get请求需要的参数Query String Parameters,其中poi_id是景点id,page是评论页面(翻页只用改变page的值就行)。

python 爬取马蜂窝景点翻页文字评论的实现

import re
import time
import requests
#评论内容所在的url,?后面是get请求需要的参数内容
comment_url='http://pagelet.mafengwo.cn/poi/pagelet/poiCommentListApi?'

requests_headers={
  'Referer': 'http://www.mafengwo.cn/poi/5426285.html',
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}#请求头

for num in range(1,6):
  requests_data={
    'params': '{"poi_id":"5426285","page":"%d","just_comment":1}' % (num)  #经过测试只需要用params参数就能爬取内容
    }
  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="添加评论">评论</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)
    for num in range(0, len(date_list)):
      #日期
      date = date_list[num]
      #星级评分
      star = star_list[num]
      #评论内容,处理一些标签和符号
      comment = comment_list[num]
      comment = str(comment).replace(' ', '')
      comment = comment.replace('<br>', '')
      comment = comment.replace('<br />', '')
      print(date+"\t"+star+"\t"+comment)
  else:
    print("爬取失败")

结果

python 爬取马蜂窝景点翻页文字评论的实现

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用python编写批量卸载手机中安装的android应用脚本
Jul 21 Python
简单实现python收发邮件功能
Jan 05 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
Jun 13 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
Python with标签使用方法解析
Jan 17 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
tensorflow-gpu安装的常见问题及解决方案
Jan 20 #Python
win10安装tensorflow-gpu1.8.0详细完整步骤
Jan 20 #Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
Jan 20 #Python
基于Python获取照片的GPS位置信息
Jan 20 #Python
如何基于pythonnet调用halcon脚本
Jan 20 #Python
使用TensorFlow对图像进行随机旋转的实现示例
Jan 20 #Python
TensorFLow 不同大小图片的TFrecords存取实例
Jan 20 #Python
You might like
Terran历史背景
2020/03/14 星际争霸
用Php实现链结人气统计
2006/10/09 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
PHP asXML()函数讲解
2019/02/03 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
Knockout visible绑定使用方法
2013/11/15 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
使用开源工具制作网页验证码的方法
2016/10/17 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
2017/09/10 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
python控制台英汉汉英电子词典
2020/04/23 Python
python 排序算法总结及实例详解
2016/09/28 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
python使用布隆过滤器的实现示例
2020/08/20 Python
汽车运用工程专业毕业生推荐信
2013/12/25 职场文书
网上卖盒饭创业计划书范文
2014/02/07 职场文书
竞选体育委员演讲稿
2014/04/26 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
社区平安建设方案
2014/05/25 职场文书
英文产品推荐信
2015/03/27 职场文书
我的1919观后感
2015/06/03 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
pandas中DataFrame重置索引的几种方法
2021/05/24 Python
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
使用RedisTemplat实现简单的分布式锁
2021/11/20 Redis
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
Win11软件图标固定到任务栏
2022/04/19 数码科技