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的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
Jul 09 Python
python使用chardet判断字符串编码的方法
Mar 13 Python
python遍历数组的方法小结
Apr 30 Python
Fabric 应用案例
Aug 28 Python
python安装numpy&amp;安装matplotlib&amp; scipy的教程
Nov 02 Python
python逆向入门教程
Jan 15 Python
对Python w和w+权限的区别详解
Jan 23 Python
基于 Django 的手机管理系统实现过程详解
Aug 16 Python
python实现两个字典合并,两个list合并
Dec 02 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 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
比较strtr, str_replace和preg_replace三个函数的效率
2013/06/26 PHP
PHP判断表单复选框选中状态完整例子
2014/06/24 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
jQuery 解析xml文件
2009/08/09 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
2017/09/26 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
QML使用Python的函数过程解析
2019/09/26 Python
NumPy排序的实现
2020/01/21 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
努比亚手机官网:nubia
2016/10/06 全球购物
幼儿园的门卫岗位职责
2014/04/10 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
转让协议书范本
2014/09/13 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
个人总结怎么写
2015/02/26 职场文书
求职简历自我评价怎么写
2015/03/10 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
小学教师见习总结
2015/06/23 职场文书
地震捐款简报
2015/07/21 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
电工实训心得体会
2016/01/14 职场文书