Python实现的爬取网易动态评论操作示例


Posted in Python onJune 06, 2018

本文实例讲述了Python实现的爬取网易动态评论操作。分享给大家供大家参考,具体如下:

打开网易的一条新闻的源代码后,发现并没有所要得评论内容。

经过学习后发现,源代码只是一个完整页面的“骨架”,而我所需要的内容是它的填充物,这时候需要打开工具里面的开发人员工具,从加载的“骨肉”里找到我所要的评论

Python实现的爬取网易动态评论操作示例

圈住的是类型

找到之后打开网页,发现json类型的格式,用我已学过的正则,bs都不好闹,于是便去了解了正则,发现把json的格式换化成python的格式后,用列表提取内容是一条明朗的道路。。。

但是在细致分析的时候也发现了问题

Python实现的爬取网易动态评论操作示例

从这里获得每条评论时,感觉有点不对,观察发现如果是回复评论的评论会出现他回复那条评论的数据,于是用正则提取了一下

最终的代码如下:

#coding=utf-8
__author__ = 'kongmengfan123'
import urllib
import re
import json
import time
def gethothtml(url):#最热评论
  page=urllib.urlopen(url)
  html=page.read()
  get_json(html)
def gethnewtml():#最新评论有5页
  for i in range(1,6):
    url = 'http://comment.news.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/threads/C4QFIJNS0001875O/comments/newList?offset=%d&limit=30&showLevelThreshold=72&headLimit=1&tailLimit=2&callback=getData&ibc=newspc&_=1478010624978'%i*30
    page = urllib.urlopen(url)
    html=page.read()
    time.sleep(1)
    get_json(html)
def get_json(json_):
  end_=re.compile(r'\);')#将json网页转化成python数据
  begain=re.compile(r'getData\(')
  json_=begain.sub('',json_)
  json_=end_.sub('',json_)
  ajson=json.loads(json_)
  lis=ajson["commentIds"]#获得每条评论的键
  n=0
  for i in range(1,len(lis)):
    try:
      xulie=re.compile('\d{10,}')#取得准确评论的键(去掉回复)
      bia=re.findall(xulie,lis[n])
      w.write(ajson['comments'][bia[len(bia)-1]]['user']['nickname'].encode('utf-8')+'|')
    except KeyError:
      w.write(ajson['comments'][bia[len(bia)-1]]['user']['location'].encode('utf-8')+'|')
    if (len(lis[n])>13):
      xulie=re.compile('\d{10,}')
      bia=re.findall(xulie,lis[n])
      w.write(ajson['comments'][bia[len(bia)-1]]['content'].encode('utf-8')+'\n')
    else:
       w.write(ajson['comments'][lis[n]]['content'].encode('utf-8')+'\n')
    n=n+1
  return lis
w=open('wangyi.txt','w')
w.write('用户名'+'|'+'热门评论'+'\n')
hot_=gethothtml('http://comment.news.163.com/api/v1/products/a2869674571f77b5a0867c3d71db5856/threads/C4QFIJNS0001875O/comments/hotList?offset=0&limit=40&showLevelThreshold=72&headLimit=1&tailLimit=2&callback=getData&ibc=newspc')
w.write('用户名'+'|'+'最新评论'+'\n')
gethnewtml()
w.close()

成功。

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python计数排序和基数排序算法实例
Apr 25 Python
python实现上传样本到virustotal并查询扫描信息的方法
Oct 05 Python
python在Windows8下获取本机ip地址的方法
Mar 14 Python
Python实现随机选择元素功能
Sep 14 Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 Python
python 重定向获取真实url的方法
May 11 Python
python实现本地图片转存并重命名的示例代码
Oct 27 Python
python控制nao机器人身体动作实例详解
Apr 29 Python
Pandas分组与排序的实现
Jul 23 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
django admin 添加自定义链接方式
Mar 11 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 #Python
利用python如何处理百万条数据(适用java新手)
Jun 06 #Python
Python3实现的Mysql数据库操作封装类
Jun 06 #Python
python操作redis方法总结
Jun 06 #Python
目前最全的python的就业方向
Jun 05 #Python
python多进程提取处理大量文本的关键词方法
Jun 05 #Python
使用python进行文本预处理和提取特征的实例
Jun 05 #Python
You might like
smtp邮件发送一例
2006/10/09 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
js 窗口抖动示例
2013/09/04 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
Nodejs调用WebService的示例代码
2017/09/29 NodeJs
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
Python的subprocess模块总结
2014/11/07 Python
介绍Python中的__future__模块
2015/04/27 Python
实例解析Python的Twisted框架中Deferred对象的用法
2016/05/25 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
PyCharm代码格式调整方法
2018/05/23 Python
pytorch permute维度转换方法
2018/12/14 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
使用python将微信image下.dat文件解密为.png的方法
2020/11/30 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
大学应届生求职简历的自我评价
2013/10/08 职场文书
网络专业学生个人的自我评价
2013/12/16 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
vue+springboot实现登录验证码
2021/05/27 Vue.js
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL