首先我们应该理解JSON是什么:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。json最大的优势就是独立于编程语言, 易于人阅读和编写,同时也易于机器解析和生成。所以,如果我们需要在不同的编程语言之间传递对象,或者需要在网络世界中传输数据,我们都可以将数据序列化为json格式。当将其序列化为json格式以后,可以方便地被所有编程语言读取与解析,也可以方便地被存储在磁盘中或者用于网络传输。正因为有这些优点,json在实际中使用非常广泛。
JSON构建于两种结构:
1.“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
2.值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
假设你已经大概的理解JSON到底是什么,那我们就开始实现我们想要的功能。
先来一个非常简单的一个包含JSON模块的python小程序:当我们写程序之前第一步就是先找到这个商品评论的JSON库,每一个商品的json库的名字都不一样,但是它的内容的格式一样,所以我们只要写一个万能的格式就可以了。其中需要注意的是你想要的信息的类名,一定要把。类名写对了,程序就对了一大半了。
完整的程序如下:
# -*- coding:utf-8 -*- import urllib import re import json def getHtml(url): page=urllib.urlopen(url) html=page.read().decode("gbk") return html def getItems(html): reg=re.compile("fetchJSON_comment98vv766\(") data=reg.sub('',html) reg1=re.compile("\);") data=reg1.sub('',data) a=json.loads(data) for k in a["comments"]: print k["content"] #这就是需要的评论的内容当我们跑程序的时候,最后把你想爬的商品的url复制到结果栏中回车就行。print k["referenceName"] #名称print k["referenceTime"] #时间 f1=open('v.txt','a+') f1.write(k["content"].encode('UTF-8')) f1.write(k["referenceName"].encode('UTF-8')) f1.write(k["referenceTime"].encode('UTF-8')) f1.close()a=raw_input("请输入网址")a=a.replace('https://item.jd.com/','')a=a.replace('.html','')for i in range(0,10): url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv766&productId='+a+'&score=0&sortType=5&page='+str(i)+'&pageSize=10&isShadowSku=0&fold=1' html=getHtml(url) getItems(html)