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使用cStringIO实现临时内存文件访问的方法
Mar 26 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
Python多进程池 multiprocessing Pool用法示例
Sep 07 Python
Flask之请求钩子的实现
Dec 23 Python
python把1变成01的步骤总结
Feb 27 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
Dec 20 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
Python实现SMTP邮件发送
Jun 16 Python
解决tensorflow 释放图,删除变量问题
Jun 23 Python
python中取绝对值简单方法总结
Jul 24 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生成sitemap.xml地图函数
2013/11/13 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
Discuz7.2版的faq.php SQL注入漏洞分析
2014/08/06 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
JavaScript实现拖拽元素对齐到网格(每次移动固定距离)
2016/11/30 Javascript
vue使用Axios做ajax请求详解
2017/06/07 Javascript
微信小程序实现动态设置页面标题的方法【附源码下载】
2017/11/29 Javascript
element-ui多文件上传的实现示例
2019/04/10 Javascript
vue基于viewer实现的图片查看器功能
2019/04/12 Javascript
JavaScript函数式编程(Functional Programming)纯函数用法分析
2019/05/22 Javascript
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
浅谈HTML5 FileReader分布读取文件以及其方法简介
2017/11/09 HTML / CSS
Belstaff英国官方在线商店:Belstaff.co.uk
2021/02/09 全球购物
自荐信格式技巧有哪些呢
2013/11/19 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
绿色家庭事迹材料
2014/05/01 职场文书
小学毕业典礼演讲稿
2014/09/09 职场文书
2015年共青团工作总结
2015/05/15 职场文书
刑事附带民事代理词
2015/05/25 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
给学校的建议书400字
2015/09/14 职场文书
2016高考寄语集锦
2015/12/04 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
Python探索生命起源 matplotlib细胞自动机动画演示
2022/04/21 Python