大神请绕路,新手先别急着上车
我们先来了解一下京东商品评论的地址,他们的客户评论看似是在商品页(item.jd.com),但实际上是在club.jd.com/review/这个url里面,要找到这个只要打开浏览器的console看看页面元素的href的连接看仔细点就行。
club.jd.com/review/在这一页里面留心点看看comment-content,你就会有找到你想要的
#encoding:utf-8
import urllib
from snownlp import SnowNLP
r = False
l = ''
n = 0
sno = raw_input('please input goods number:\n')
f = open('jdpl_data3.txt','w')
try:
for i in range (1,64) :
p = urllib.urlopen('http://club.jd.com/review/%s-3-%d-0.html'%(sno,i))
for j in p.read():
if j == '\n':
#print l
if r :
if '</dd>' in l:
l = l.replace('\t','')
l = l.replace(' ','')
l = l.replace('<dd>','')
l = l.replace('</dd>','')
n = n+1
print l
f.write(str(n))
f.write(' ')
f.write(l)
f.write(' ')
s = SnowNLP(l.decode('gbk')).sentiments
f.write(str(s))
f.write('\n')
r = False
if 'comment-content' in l :
r = True
l = ''
else:
l = l + j
except Exception,e:
f.close()
f.close()
print 'All Finish!'
里面的snownlp模块是用来进行情感分析的,将评论解码成unicode格式,然后调入snownlp模块的sentisments就可以得到一个感情值,0.5为中性,越接近1越是喜欢,越接近0越是厌恶
在这个url:
http://club.jd.com/review/%s-3-%d-0.html
%s是我们一开始输入的商品代号,%d是评论的第几页,京东的客户评论一页有20条,通过for循环,我可以把所有的评论页都遍历一遍
每次抓取网页的主要思路是先找到标签里的comment-content,然后将r设置为true,之后等到爬取的html行中出现<dd>,就提取<dd></dd>标签里的评论,然后将r设置为false继续读取下一行html内容直到读取完网页内容,或者网页不存在为止
程序抓取的评论会保存在同目录下的 jdpl_data3.txt 文件里面
最后实现的效果请看:http://pan.baidu.com/s/1c2kXPSW 或者下载资源包http://download.csdn.net/detail/baidu_28795717/9830483
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)