学习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. WebSphere MQ 安装

    WebSphereMQ可以在IBM官网下载,有试用版90天的.下载地址http://www.ibm.com/developerworks/cn/downloads/ws/wmq/index.html ...

  2. XMLPuLL解析

    1 package com.bawei.day14_xmlpull; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 i ...

  3. NCreport报表控件教程:设计页眉和页脚

    一.设计页眉 一般来说页眉部分一般是用于包含标题的内容, 首先我们会添加列标签到页眉部分,标签都是简单的文本,标签项一般是用于在报表上显示一些描述信息,标签都是静态项,所以它们的值不会有变化. 添加标 ...

  4. 结合Apache和Tomcat实现集群和负载均衡 JK 方式 2 (转)

    本文Apache+Tomcat集群配置       基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集群和负载均衡配置. 准备环境 Apache Apa ...

  5. web项目开发规范整理总结

    一.类.函数.变量名命名: 1.定义类时,全部拼音的首字母必须大写:如Person,ClassDemo:(帕斯卡命名法):也可以用带下斜杆的匈牙利命名法进行命名,如    head_navigatio ...

  6. [DataBase] MongoDB (7) MongoDB 索引

    MongoDB 索引 1. 建立索引 唯一索引db.passport.ensureIndex( {"loginname": 1}, {"unique": tru ...

  7. Other linker flags

    -ObjC:加了这个参数后,链接器就会把静态库中所有的Objective-C类和分类都加载到最后的可执行文件中-all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要随便使 ...

  8. 原创一看便知、Maven创建web项目

    创建maven-项目    如果 pom.xml 文件报错 右击项目-->Maven-->update Project 详细步骤   上图中Next 2.继续Next 3.选maven-a ...

  9. 24-React Components组件

    Components 组件 1.组件 可以让UI独立的分割出来,可以让UI重复利用. 2.组件就像是JavaScript函数,它们能够接收任意的输入(称为"props",即属性)并 ...

  10. web前端之HTML的大框架(body元素与frameset元素)

    web前端之HTML的大框架      body元素与frameset元素 对于从事html的人员来说,我们一般熟悉的框架是先声明html ,然后在<html>标签对里包着<head ...