json爬取京东评论

来源:互联网 发布:ubuntu 国内源 编辑:程序博客网 时间:2024/05/22 12:19

最近学习了Python中json模块,并用json爬取了京东商城中Apple iPhone 7 Plus (A1661) 手机的评价

①首先,获取json格式的文件,我用的是百度浏览器。

    打开评论网页,单击鼠标右键—查看元素—蓝色框内为所要查看的内容。右面的请求地址即为评论网页。


11


②利用正则替换掉不需要的内容,最后保留的结果应为一个字典。用  json.loads()  解码字符串转换为python形式时格式很重要,在这里转换成字典形式。将开头和结尾去掉剩下一个字典,不可以使用正则直接匹配所需内容(原因目前还没有搞清楚)。



开头的 ‘fetchJSON_comment98vv106813(’ 需要用空格替换掉。


结尾的 ‘);’ 部分也需要用空格替换掉。剩下的即为一个字典。

整个代码如下:

#!/usr/bin/python#coding:utf-8import reimport jsonimport urllib2user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'headers = { 'User-Agent' : user_agent }file = open('jingdong.txt','w')def crawlProductComment(url,page):    page = urllib2.urlopen(url)    html = page.read().decode('gbk')    print html    data0 = re.sub(u'^fetchJSON_comment98vv106813\(', '', html)#re.sub即利用正则替换想替换的内容    reg1 = re.compile('\);')    data1 = reg1.sub('', data0)    data = json.loads(data1)#data1的内容为一个字典,用{}括起来的内容    for i in data['comments']:        productName = i['referenceName'].encode('utf-8')        file.write("商品全名:{}".format(productName)+'\n')        commentTime = i['creationTime'].encode('utf-8')        file.write("用户评论时间:{}".format(commentTime)+'\n')        content = i['content'].encode('utf-8')        file.write("用户评论内容:{}".format(content)+'\n')for i in range(0,10):    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv106813&productId=3133853&score=0&sortType=5&page=' + str(i) +'&pageSize=10&isShadowSku=0&fold=1'    crawlProductComment(url,i)file.close()

爬取结果如下:



原创粉丝点击