python爬取网易评论
最近学习了json模块,并用它爬取了网易的评论。
爬取的是“最近华北空气污染严重”的新闻(http://comment.news.163.com/news3_bbs/B9MBB38O00014Q4P.html)
1、首先获取json格式的文件:我用的是360浏览器(貌似用谷歌比较好,但我谷歌出了点问题所以用的360,不过没啥影响)
打开评论的网页,选取‘工具—开发人员工具’,或直接按F12,得到如下工具,点击Network,可以直接点 Scripts 得到 json 文件,一开始不知道评论是哪个文件。后来发现后缀名是 .html 的是评论网页。
2、网址:网易的评论有两种,一个是热门跟帖,一个是最新跟帖,两种帖子的网址不同,其中热门只有一个,而最新是多页的
#热门跟帖,也许它后面有个"_1",但若改成“_2”或更大时,它都长得一样但并不是评论!
http://comment.news.163.com/data/news3_bbs/df/B9MBB38O00014Q4P_1.html
#最新跟帖
http://comment.news.163.com/cache/newlist/news3_bbs/B9MBB38O00014Q4P_1.html</span>
所以要同时爬取两种网址。
3、处理字符串:用 json.loads() 解码字符串转换为python形式时格式很重要,在这里转换成字典形式。
将开头和结尾去掉,只剩下一个大字典,并去掉里面多余的信息
开头:
结尾:
这时候可以 printpost.keys() 试一下,可以得到字典中的键,在两种网址中,包含评论的键为:
接着获取这两个键里的值,可以得到每条帖子的信息:
接下来就可以获得评论了。
4、报错:socket.error: [Errno 10054],查了一下是远程主机重置了链接,是大量访问的原因,加了一个 time.sleep()就好了。
5、代码如下:
#coding=utf-8
import urllib2
import json
import re
import time
class WEPL:def __init__(self):self.user_agent = 'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)'self.headers = {'User_Agent' :self.user_agent}self.url1='http://comment.news.163.com/data/news3_bbs/df/B9MBB38O00014Q4P_1.html'def getPageIndex(self,pageIndex):url2='http://comment.news.163.com/cache/newlist/news3_bbs/B9MBB38O00014Q4P_'+str(pageIndex)+'.html'return url2def getHtml(self,url):try:request=urllib2.Request(url,headers=self.headers)response=urllib2.urlopen(request)html=response.read()return htmlexcept urllib2.URLError,e:if hasattr(e,'reason'):print u'loading error',e.reasonreturn Nonedef getPost(self):for i in range(1,10):#两种网址分开处理if i==1:html=self.getHtml(self.url1)data1=re.sub('^var replyData=','',html)data2=data1[:-1]else:url2=self.getPageIndex(i)html=self.getHtml(url2)data1=re.sub('^var newPostList=','',html)data2=data1[:-2]data3=re.sub(" \[\<a href=''\>(.*?)\<\\\\/a\>\]: ","",data2)data4=re.sub("\<span (.*?)\<\\\\/span\>","",data3)data5=re.sub("\<br\>","",data4)#将json文件解码为python格式post=json.loads(data5)if i==1:for allvalue in post['hotPosts']:with open('pl3.txt','a+') as fd:fd.write(allvalue['1']['f'].encode('utf-8')+'('+'IP:')fd.write(allvalue['1']['ip'].encode('utf-8')+')'+'\n'+'---')fd.write(allvalue['1']['b'].encode('utf-8')+'\n')else:for allvalue in post['newPosts']:with open('pl3.txt','a+') as fd:fd.write(allvalue['1']['f'].encode('utf-8')+'('+'IP:')fd.write(allvalue['1']['ip'].encode('utf-8')+')'+'\n'+'---')fd.write(allvalue['1']['b'].encode('utf-8')+'\n')#防止链接被重置time.sleep(2)
spider=WEPL()
spider.getPost()
python爬取网易评论相关推荐
- python爬取歌曲评论_python 爬取歌曲评论的简单示例
这篇文章主要为大家详细介绍了python 爬取歌曲评论的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 爬取歌曲评论的简单示例的小伙伴,下面一起跟随512笔记的小编罗X来看看吧. ...
- 看看你爱的他今天是什么‘颜色‘ -- Python爬取微博评论制作专属偶像词云
简介:快来拿出你珍藏的pick star,用大家对他的爱重塑一个他吧.通过爬取微博评论,制作你的偶像图片词云,天天都是不重样的哦! 很多人学习python,不知道从何学起. 很多人学习python,掌 ...
- python爬取股票信息_利用Python爬取网易上证所有股票数据(代码
利用Python爬取网易上证所有股票数据(代码 发布时间:2018-04-14 17:30, 浏览次数:1261 , 标签: Python import urllib.request import r ...
- python3爬取微博评论教程_用python 爬取微博评论,怎么打开微博评论下的查看更多|...
怎样用python爬新浪微博大V所有数据 先上结论,通过公开的api如爬到某大v的所有数据,需足以下两个条件: 1.在你的爬虫开始运行时,该大v的所有微博发布量没有超过回溯查询的上限,新浪是2000, ...
- python爬取微博评论(无重复数据)
python爬取微博评论(无重复数据) 前言 一.整体思路 二.获取微博地址 1.获取ajax地址2.解析页面中的微博地址3.获取指定用户微博地址 三.获取主评论 四.获取子评论 1.解析子评论2.获 ...
- python爬取快手评论信息+快手号
python爬取快手评论信息+快手号 潦草记录一下思路 从浏览器进行抓包,分析提交参数, 1.从手机中打开快手,找到需要爬取的视频,转发复制链接,从网页中打开 2.按F12进入开发者模式,进行抓包 3 ...
- python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据
python 爬虫 爬微博分析 数据 最近刚看完爱情公寓5,里面的大力也太好看了吧... 打开成果的微博,小作文一样的微博看着也太爽了吧... 来 用python分析分析 狗哥这几年微博的干了些啥. ...
- python爬取豆瓣评论,并制作成词云
一.爬取豆瓣热评 该程序进行爬取豆瓣热评,将爬取的评论(json文件)保存到与该python文件同一级目录下 注意需要下载这几个库:requests.lxml.json.time import req ...
- 如何利用python爬取网易新闻
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: LSGOGroup PS:如有需要Python学习资料的小伙伴可以 ...
- python 东哥 with open_向娱乐圈看齐,Python爬取微博评论并制作酷炫的词云!
2019年伊始,祝愿各位多吃不胖,身体倍儿棒! image 回顾刚刚过去的2018,还有哪些新闻在你心底留有印象? image 怎奈年纪增长,记忆减退,逝去的爆炸新闻也逐渐褪色变得索然无味,毕竟一直以 ...
最新文章
- python实现密码的强度_字符串处理函数(二)python语言实现密码强度校验
- Samba的主配置文件
- Barracuda Backup 5.4版本添加了更多云存储
- C++基础知识之vector
- 过去式加ed的发音_过去式的变化规律,掌握诀窍了吗?
- 30 个很棒的 PHP 开源 CMS 内容管理系统
- OSGI-flex-blazeds通信
- PyTorch——深度神经网络的写作笔记
- Sun 解决方案大会归来
- Elasticsearch 安装的时候,Unsupported major.minor version 51.0问题的解决
- python导入模块中的对象_详解Python项目开发时自定义模块中对象的导入和使用
- QQ所有文件和目录详细分析
- 域的基本管理:统一公司部门桌面
- python二进制转十进制编程_怎么用python二进制转换十进制
- 倾斜摄影静态单体化 BIM模型调用解决思路
- python实现3d人物建模_一张图实现3D人脸建模!这是中科院博士生入选ECCV的新研究 | 开源...
- Android多媒体添加软解码
- 夜光:Java成神之路(二)擅长的语言
- js jquery新窗口打开的几种方式
- geoserver给天地图添加服务,给线加标注