json爬取京东评论

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

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

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


json爬取京东评论_第1张图片


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


json爬取京东评论_第2张图片

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

json爬取京东评论_第3张图片

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

整个代码如下:

#!/usr/bin/python
#coding:utf-8
import re
import json
import urllib2
user_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()

爬取结果如下:

json爬取京东评论_第4张图片


你可能感兴趣的:(爬虫)