python爬京东商品评论(json)

Python网络爬虫所需要的模块
本次爬虫程序需要的模块有:request、urllib、json
以下先来分别介绍这几个模块的用处

request模块
利用request(requests)模块我们可以获取所要爬取网页的html内容。使用request可以返回对应网页的连接,在调用.text或者.content来获取对应的网页html内容。其中.text是以字符串的格式返回网页内容,.content是以二进制字节的形式反回网页内容,两者有不同的用处。例如有些以.text返回的网页内容会出现编码格式不对导致的乱码问题等。
————————————————
json模块
使用json是为了将对爬取下来的评论网页解析成Python方便处理的字典格式,json有.load()和.loads(),dump()和dumps()。loads()是将json格式转换成Python方便处理的字典格式。而dumps()方法是将Python的字典格式转换成json格式。

————————————————

# __author:   han-zhang
# date:  2019/8/16 18:02

import urllib.request
import json, jsonpath

start_page = int(input('start_page:'))
end_page = int(input('end_page:'))
for p in range(start_page, end_page + 1):
    url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv995&productId=1981570&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1'
    url = url.format(p)
    #仿造请求头,骗过浏览器
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
        'Referer': 'https://item.jd.com/1981570.html'
    }
    #发起请求
    request = urllib.request.Request(url=url, headers=headers)
    #得到响应
    content = urllib.request.urlopen(request).read().decode('gbk')
    #去掉多余得到json格式
    content = content.strip('fetchJSON_comment98vv995();')
    # print(content)
    obj = json.loads(content)

    comments = obj['comments']
    # print(comments)
    fp = open('jingdong.txt', 'a', encoding='gbk')
    for comment in comments:
        # print(comment)
        name = comment['referenceName']

        id = comment['id']

        con = comment['content']

        time = comment['creationTime']

        img_url = comment['userImageUrl']

        item = {
            'name': name,
            'id': id,
            'con': con,
            'time': time,
            'img_url': img_url,
        }
        string = str(item)
        fp.write(string + '\n')
    fp.close()
    print('%s-page---finish' % p)

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