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 Deque 模块使用详解
Jul 04 Python
Python中使用md5sum检查目录中相同文件代码分享
Feb 02 Python
python下读取公私钥做加解密实例详解
Mar 29 Python
Python虚拟环境项目实例
Nov 20 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
python urllib爬虫模块使用解析
Sep 05 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
python标准库OS模块详解
Mar 10 Python
Python如何实现后端自定义认证并实现多条件登陆
Jun 22 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Python之基础函数案例详解
Aug 30 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和ACCESS写聊天室(二)
2006/10/09 PHP
php通过淘宝API查询IP地址归属等信息
2015/12/25 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
JS Array对象入门分析
2008/10/30 Javascript
IE bug table元素的innerHTML
2010/01/11 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JS实现跟随鼠标闪烁转动色块的方法
2015/02/26 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
JS组件Bootstrap导航条使用方法详解
2016/04/29 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
使用python遍历指定城市的一周气温
2017/03/31 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
python3实现逐字输出的方法
2019/01/23 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
pandas DataFrame 交集并集补集的实现
2019/06/24 Python
Pycharm远程调试原理及具体配置详解
2019/08/08 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
重构Python代码的六个实例
2020/11/25 Python
CSS3中box-shadow的用法介绍
2015/07/15 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
公司酒会主持词
2015/07/02 职场文书
mysql 如何获取两个集合的交集/差集/并集
2021/06/08 MySQL