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下函数参数的传递(参数带星号的说明)
Sep 19 Python
Django的session中对于用户验证的支持
Jul 23 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
python爬取指定微信公众号文章
Dec 20 Python
在python 不同时区之间的差值与转换方法
Jan 14 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python如何读取bin文件并下发串口
Jul 05 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
Aug 27 Python
Python基于traceback模块获取异常信息
Jul 23 Python
python在协程中增加任务实例操作
Feb 28 Python
Python中的min及返回最小值索引的操作
May 10 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
PHP的FTP学习(四)
2006/10/09 PHP
php5.3 注意事项说明
2013/07/01 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
基于逻辑运算的简单权限系统(实现) JS 版
2007/03/24 Javascript
javascript中数组的sort()方法的使用介绍
2013/12/18 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
javascript用正则表达式过滤空格的实现代码
2016/06/14 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
Django中间件工作流程及写法实例代码
2018/02/06 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
降低python版本的操作方法
2020/09/11 Python
HTML5时代CSS设置漂亮字体取代图片
2014/09/04 HTML / CSS
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
金山毒霸系列的笔试题
2013/04/13 面试题
捐款通知怎么写
2015/04/24 职场文书
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript