学习python不久,最近爬的网页都是直接源代码中直接就有的,看到网易新闻的评论时,发现评论时以json格式加载的.....

爬的网页是习大大2015访英的评论页http://comment.news.163.com/news_guonei8_bbs/SPEC0001B60046CG.html

步骤如下:

1.使用谷歌浏览器分析网页首页加载的数据

打开网页----按下F12----点击Network,此时是空的

刷新以后,会出现如下图:(我以前加载过页面,所以json数据显示的不全)

点击其中的一个json格式的文件,找到url,并在网页中打开,看看是不是自己想要的数据:

我第一次访问网页的时候打了三个,只有一个是并论的内容,首页的网址为:

http://comment.news.163.com/data/news_guonei8_bbs/df/SPEC0001B60046CG_1.html?_=14455959217790

数据为:

2.其他评论页

在点击其他评论页时,先点击一下Network中的清除按钮,方便查找json---从第二页开始观察,几乎都一样

点击找到url,并在浏览器中打开

数据虽然是乱码的,在Python中读取到的是可以正常查看的

3.网址规律

一开始以为网址后面的有什么规律,后来发现去掉也没影响,

所以只要把页数换成对应的评论页就好了(我只能打开34页??)

4.代码

注:由于数据开始有变量名,结尾有分号,在使用json.loads(data)时报错,所以先对数据进行处理

 # encoding=utf-8

 import urllib2
import json
import re
import time
class JSON():
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/news_guonei8_bbs/df/SPEC0001B60046CG_1.html'
def getUrls(self,pageIndex):
url2='http://comment.news.163.com/cache/newlist/news_guonei8_bbs/SPEC0001B60046CG_'+str(pageIndex)+'.html'
return url2
def getHtml(self,url):
try:
request=urllib2.Request(url,headers=self.headers)
respone=urllib2.urlopen(request)
html=respone.read()
return html
except urllib2.URLError,e:
if hasattr(e,'reason'):
print u"连接失败",e.reason
return None
#处理字符串,没有处理干净的可以再打开文件进行处理
def strDeal(self,data,pageIndex):
if pageIndex==1:
data=data.replace('var replyData=','')
else:
data=data.replace('var newPostList=','')
reg=re.compile("&nbsp;\[<a href=''>")
data=reg.sub('--',data)
reg2=re.compile('<\\\/a>\]')#<\/a>]的正则?
data=reg2.sub('',data)
reg3=re.compile('<br>')
data=reg3.sub('',data)
return data
#解析json数据并存入文件
def parserJson(self):
with open('wangyi2.txt','a') as f:
f.write('用户ID'+'|'+'评论'+'|'+'点赞数'+'\n')
for i in range(1,35):
if i==1:
url=self.url1
data=self.getHtml(url)
data=self.strDeal(data,i)[:-1]
value=json.loads(data)
f=open('wangyi2.txt','a') for item in value['hotPosts']:
f.write(item['']['f'].encode('utf-8')+'|')
f.write(item['']['b'].encode('utf-8')+'|')
f.write(item['']['v'].encode('utf-8')+'\n')
f.close()
print 'sleeping pageload %d/34'%i
time.sleep(6)
else:
url=self.getUrls(i)
data=self.getHtml(url)
data=self.strDeal(data,i)[:-2]
# 转换,一开始得到的数据类型为str,使用json.loads()函数,得到原始数据,此时的value的数据类型为dict,接下来就可以正常访问字典了。
value=json.loads(data)
f=open('wangyi2.txt','a') for item in value['newPosts']:
f.write(item['']['f'].encode('utf-8')+'|')
f.write(item['']['b'].encode('utf-8')+'|')
f.write(item['']['v'].encode('utf-8')+'\n') f.close()
print 'sleeping pageload %d/34'%i
time.sleep(6) js=JSON()
js.parserJson()

python爬取网易评论的更多相关文章

  1. 如何利用python爬取网易新闻

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: LSGOGroup PS:如有需要Python学习资料的小伙伴可以 ...

  2. 用 Python 爬取网易严选妹子内衣信息,探究妹纸们的偏好

    网易商品评论爬取 分析网页 评论分析 进入到网易精选官网,搜索“文胸”后,先随便点进一个商品. 在商品页面,打开 Chrome 的控制台,切换至 Network 页,再把商品页Python入门到精通学 ...

  3. 票房和口碑称霸国庆档,用 Python 爬取猫眼评论区看看电影《我和我的家乡》到底有多牛

    今年的国庆档电影市场的表现还是比较强势的,两名主力<我和我的家乡>和<姜子牙>起到了很好的带头作用. <姜子牙>首日破 2 亿,一举刷新由<哪吒之魔童降世&g ...

  4. python爬取京东评论

    一.分析 1.找到京东商品评论所在位置(记得点击商品评论,否则找不到productPageComments.action)  2.解析文件 打开后发现是json数据,但不是那么规范,所以需要去点前面的 ...

  5. Python爬取新浪微博评论数据,写入csv文件中

    因为新浪微博网页版爬虫比较困难,故采取用手机网页端爬取的方式 操作步骤如下: 1. 网页版登陆新浪微博 2.打开m.weibo.cn 3.查找自己感兴趣的话题,获取对应的数据接口链接 4.获取cook ...

  6. python爬取网易翻译 和MD5加密

    一.程序需要知识 1.python中随机数的生成 # 生成 0 ~ 9 之间的随机数 # 导入 random(随机数) 模块 import random print(random.randint(0, ...

  7. 用Python爬取了三大相亲软件评论区,结果...

    小三:怎么了小二?一副愁眉苦脸的样子. 小二:唉!这不是快过年了吗,家里又催相亲了 ... 小三:现在不是流行网恋吗,你可以试试相亲软件呀. 小二:这玩意靠谱吗? 小三:我也没用过,你自己看看软件评论 ...

  8. python爬取股票最新数据并用excel绘制树状图

    大家好,最近大A的白马股们简直 跌妈不认,作为重仓了抱团白马股基金的养鸡少年,每日那是一个以泪洗面啊. 不过从金融界最近一个交易日的大盘云图来看,其实很多中小股还是红色滴,绿的都是白马股们. 以下截图 ...

  9. Python爬取腾讯新闻首页所有新闻及评论

    前言 这篇博客写的是实现的一个爬取腾讯新闻首页所有的新闻及其所有评论的爬虫.选用Python的Scrapy框架.这篇文章主要讨论使用Chrome浏览器的开发者工具获取新闻及评论的来源地址. Chrom ...

随机推荐

  1. barManager 挤压后“ 自动换行”和“自动隐藏”的实现方法

  2. push or get File or Folder using scp wrapped with expect and bash

    经常需要把服务器的某些文件传到 Mac,或者获取 Mac 的一些文件到服务器.尽管有很多命令scp, ftp, rsync都可以,霸特每次都有敲好长的命令,好烦,而且还要输入密码.所以想着 wrap ...

  3. Dynamics AX 2012 R2 窗体系列 - 在窗体上修改字段时所触发的方法及其顺序

        在这个系列里,Reinhard将和大家一起探索在AX的窗体上执行操作时,都会触发窗体.窗体数据源和表上的哪些方法,并且是以怎样的顺序触发的.     这次,我们来看看在窗体上修改或录入数据的情 ...

  4. Linux 指令大全

    作为一个小前端,以前有我们的运维大神在的时候,要给服务器做什么配置的时候就找他(那时幸福到哭),如今他走了,公司也没招人(想把这个钱省下来,让我发现了,毕竟我能当小运维用,虽然很这方面很渣渣,哈哈,偷 ...

  5. [课程设计]Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面)

    Scrum 3.4 多鱼点餐系统开发进度(下单详细信息页面&会员信息页面) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队 ...

  6. java cef3 禁止右键菜单项

    如下图所示,在context_menu_handler.cpp中ContextMenuHandler::OnBeforeContextMenu添加以下代码即可: ){ model->Clear( ...

  7. poj2485 kruskal与prim

    Kruskal: #include<iostream> #include<cstdio> #include<algorithm> using namespace s ...

  8. 菜鸟学Android编程——简单计算器《一》

    菜鸟瞎搞,高手莫进 本人菜鸟一枚,最近在学Android编程,网上看了一些视频教程,于是想着平时手机上的计算器应该很简单,自己何不尝试着做一个呢? 于是就冒冒失失的开撸了. 简单计算器嘛,功能当然很少 ...

  9. python 学习笔记 redis操作

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  10. Keras

    sudo pip install keras --安装 新建一个文件,里面存储的数据:第一列是属性,第二列是类别 11220044 011220044 011220044 011220033 1112 ...