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多线程、异步+多进程爬虫实现代码
Feb 17 Python
简单掌握Python的Collections模块中counter结构的用法
Jul 07 Python
Python 迭代器与生成器实例详解
May 18 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
python 表格打印代码实例解析
Oct 12 Python
python实现图片插入文字
Nov 26 Python
python和php哪个更适合写爬虫
Jun 22 Python
pandas.DataFrame.drop_duplicates 用法介绍
Jul 06 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 Python
Python3如何使用tabulate打印数据
Sep 25 Python
python基于pygame实现飞机大作战小游戏
Nov 19 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 cache类代码(php数据缓存类)
2010/04/15 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
Laravel 数据库加密及数据库表前缀配置方法
2019/10/10 PHP
js常见表单应用技巧
2008/01/09 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
javascript右下角弹层及自动隐藏(自己编写)
2013/11/20 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
setInterval与clearInterval的使用示例代码
2014/01/28 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
vue实现下载文件流完整前后端代码
2020/11/17 Vue.js
[09:13]2014DOTA2国际邀请赛 中国区预选赛coser表演
2014/05/23 DOTA
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
Python中字符串的处理技巧分享
2016/09/17 Python
python实现数据库跨服务器迁移
2018/04/12 Python
django加载本地html的方法
2018/05/27 Python
基于python绘制科赫雪花
2018/06/22 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
毕业生个人求职的自我评价
2013/10/28 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
中学生思想品德评语
2014/12/31 职场文书
面试通知单大全
2015/04/20 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
工厂员工辞职信范文
2015/05/12 职场文书
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python