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与js)两种实现
Feb 21 Python
python实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python paramiko模块学习分享
Aug 23 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
python实现验证码识别功能
Jun 07 Python
Python多继承原理与用法示例
Aug 23 Python
Python装饰器语法糖
Jan 02 Python
python实现批量注册网站用户的示例
Feb 22 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
Python-接口开发入门解析
Aug 01 Python
python是否适合网页编程详解
Oct 04 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 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
用PHP制作静态网站的模板框架(一)
2006/10/09 PHP
php通用防注入程序 推荐
2011/02/26 PHP
PHP不用第三变量交换2个变量的值的解决方法
2013/06/02 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
DB.ASP 用Javascript写ASP很灵活很好用很easy
2011/07/31 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
javascript实现贪吃蛇小练习
2020/07/05 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
[02:31]《DAC最前线》之选手酒店现场花絮
2015/01/30 DOTA
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
Python中turtle库的使用实例
2019/09/09 Python
DRF框架API版本管理实现方法解析
2020/08/21 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
Python函数调用追踪实现代码
2020/11/27 Python
美国一家主营日韩美妆护肤品的在线商店:iMomoko
2016/09/11 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
市场营销专业个人自荐信格式
2013/09/21 职场文书
教学实习自我评价
2014/01/28 职场文书
2014年超市工作总结
2014/11/19 职场文书
答谢词范文
2015/01/05 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
琅琊山导游词
2015/02/05 职场文书
MySQL删除和插入数据很慢的问题解决
2021/06/03 MySQL
Python实现制作销售数据可视化看板详解
2021/11/27 Python