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 httplib,smtplib使用方法
Sep 06 Python
MySQLdb ImportError: libmysqlclient.so.18解决方法
Aug 21 Python
Python使用ftplib实现简易FTP客户端的方法
Jun 03 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
Python设计模式之组合模式原理与用法实例分析
Jan 11 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
Apr 27 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
通过实例简单了解Python中yield的作用
Dec 11 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
解决TensorFlow程序无限制占用GPU的方法
Jun 30 Python
Python远程linux执行命令实现
Nov 11 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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 数组的指针操作实现代码
2011/02/08 PHP
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
yii2中dropDownList实现二级和三级联动写法
2017/04/26 PHP
为数据添加append,remove功能
2006/10/03 Javascript
jQuery 加上最后自己的验证
2009/11/04 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
2015/06/06 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
Easyui的组合框的取值与赋值
2016/10/28 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
使用webpack搭建vue项目实现脚手架功能
2019/03/15 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
微信小程序swiper使用网络图片不显示问题解决
2019/12/13 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
[05:07]DOTA2英雄梦之声_第14期_暗影恶魔
2014/06/20 DOTA
[04:42]2015国际邀请赛CDEC战队晋级之路
2015/08/13 DOTA
python中文编码问题小结
2014/09/28 Python
Python爬取APP下载链接的实现方法
2016/09/30 Python
关于numpy中np.nonzero()函数用法的详解
2017/02/07 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
工会换届选举方案
2014/05/21 职场文书
奥林匹克的口号
2014/06/13 职场文书
学前教育专业求职信
2014/09/02 职场文书
师德先进个人材料
2014/12/20 职场文书
收银员岗位职责
2015/02/03 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
Python - 10行代码集2000张美女图
2021/05/23 Python