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中sets模块的用法实例
Sep 30 Python
python的类方法和静态方法
Dec 13 Python
Python中的tuple元组详细介绍
Feb 02 Python
详细解读Python中解析XML数据的方法
Oct 15 Python
基于Python在MacOS上安装robotframework-ride
Dec 28 Python
利用Python查看微信共同好友功能的实现代码
Apr 24 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
Windows系统下pycharm中的pip换源
Feb 23 Python
python selenium 获取接口数据的实现
Dec 07 Python
Python之多进程与多线程的使用
Feb 23 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
2017/09/16 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
获取当前网页document.url location.href区别总结
2008/05/10 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
原生js实现简单的Ripple按钮实例代码
2017/03/24 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
2018/03/23 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
scrapyd schedule.json setting 传入多个值问题
2019/08/07 Javascript
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
python数组过滤实现方法
2015/07/27 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
Python用threading实现多线程详解
2017/02/03 Python
详解python中字典的循环遍历的两种方式
2017/02/07 Python
python日期时间转为字符串或者格式化输出的实例
2018/05/29 Python
Python异常处理操作实例详解
2018/08/28 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
pytorch实现线性拟合方式
2020/01/15 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
python wsgiref源码解析
2021/02/06 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
家长给老师的感谢信
2015/01/20 职场文书
房产公证书样本
2015/01/23 职场文书
Win10鼠标宏怎么设置?win10系统鼠标宏的设置方法
2022/08/14 数码科技