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对数组进行反转的方法
May 20 Python
python套接字流重定向实例汇总
Mar 03 Python
python抓取网页中链接的静态图片
Jan 29 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
Django 实现图片上传和显示过程详解
Jul 18 Python
Python实现获取当前目录下文件名代码详解
Mar 10 Python
python实现梯度下降法
Mar 24 Python
Python参数传递对象的引用原理解析
May 22 Python
Python 基于jwt实现认证机制流程解析
Jun 22 Python
Django+Uwsgi+Nginx如何实现生产环境部署
Jul 31 Python
python中的列表和元组区别分析
Dec 30 Python
python编写五子棋游戏
May 25 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
SONY SRF-40W电路分析
2021/03/02 无线电
PHP通用分页类page.php[仿google分页]
2008/08/31 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
php中filter_input函数用法分析
2014/11/15 PHP
PHP导出Excel实例讲解
2016/01/24 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
jquery中attr和prop的区别分析
2015/03/16 Javascript
JavaScript编程中window的location与history对象详解
2015/10/26 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
vue v-on监听事件详解
2017/05/17 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
JS无限级导航菜单实现方法
2019/01/05 Javascript
angular 实现下拉列表组件的示例代码
2019/03/09 Javascript
vue集成kindeditor富文本的实现示例代码
2019/06/07 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
vue中的v-model原理,与组件自定义v-model详解
2020/08/04 Javascript
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Linux下编译安装MySQL-Python教程
2015/02/02 Python
python写日志封装类实例
2015/06/28 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
django-初始配置(纯手写)详解
2019/07/30 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
Python用requests库爬取返回为空的解决办法
2021/02/21 Python
Canvas 文本转粒子效果的实现代码
2019/02/14 HTML / CSS
html5基础标签(html5视频标签 html5新标签用法)
2013/12/30 HTML / CSS
俄罗斯花园种植材料批发和零售网上商店:Беккер
2019/07/22 全球购物
仓库班组长岗位职责
2013/12/12 职场文书
委托书范本
2014/09/13 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
大国崛起观后感
2015/06/02 职场文书
docker 制作mysql镜像并自动安装
2022/05/20 Servers