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 相关文章推荐
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python实现的HTTP并发测试完整示例
Apr 23 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
python删除不需要的python文件方法
Apr 24 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
python中类的属性和方法介绍
Nov 27 Python
python 爬取古诗文存入mysql数据库的方法
Jan 08 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
parser.add_argument中的action使用
Apr 20 Python
如何使用scrapy中的ItemLoader提取数据
Sep 30 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
python3 删除所有自定义变量的操作
Apr 08 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
PHP去掉从word直接粘贴过来的没有用格式的函数
2012/10/29 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
2020/05/14 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
2017/08/09 jQuery
基于React+Redux的SSR实现方法
2018/07/03 Javascript
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
对vue 键盘回车事件的实例讲解
2018/08/25 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
vue 修改 data 数据问题并实时显示操作
2020/09/07 Javascript
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
有机童装:Toby Tiger
2018/05/23 全球购物
Hashtable 添加内容的方式有哪几种,有什么区别?
2012/04/08 面试题
如何进行Linux分区优化
2013/02/12 面试题
生物技术专业研究生自荐信
2013/09/22 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
确保工程质量承诺书
2015/04/29 职场文书
七一慰问简报
2015/07/20 职场文书
宾馆客房管理制度
2015/08/06 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server