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绘制MySQL数据图实现数据可视化
Mar 30 Python
python批量提取word内信息
Aug 09 Python
使用Python下载歌词并嵌入歌曲文件中的实现代码
Nov 13 Python
Python基于time模块求程序运行时间的方法
Sep 18 Python
详解用python写网络爬虫-爬取新浪微博评论
May 10 Python
python字符串和常用数据结构知识总结
May 21 Python
Python插件机制实现详解
May 04 Python
Python依赖包迁移到断网环境操作
Jul 13 Python
Python存储读取HDF5文件代码解析
Nov 25 Python
如何用Python徒手写线性回归
Jan 25 Python
python 爬取华为应用市场评论
May 29 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 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
老照片 - 几十年前的收音机与人
2021/03/02 无线电
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
js类中的公有变量和私有变量
2008/07/24 Javascript
dropdownlist之间的互相联动实现(显示与隐藏)
2009/11/24 Javascript
DIV菜单层实现代码
2010/11/19 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
jQuery获取this当前对象子元素对象的方法
2016/11/29 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
2017/01/04 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
vue文件树组件使用详解
2018/03/29 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
在Angular中使用JWT认证方法示例
2018/09/10 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
[05:56]第十六期——新进3大C之小兔基
2014/06/24 DOTA
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python 处理数据的实例详解
2017/08/10 Python
python解决字符串倒序输出的问题
2018/06/25 Python
深入了解Python在HDA中的应用
2019/09/05 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
Python里面search()和match()的区别
2016/09/21 面试题
班组长安全工作职责
2014/07/15 职场文书
2015年行政部工作总结
2015/04/28 职场文书
可怜妈妈观后感
2015/06/09 职场文书
小学副班长竞选稿
2015/11/21 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
Python中的套接字编程是什么?
2021/06/21 Python
用JS写一个发布订阅模式
2021/11/07 Javascript