京东商品评论爬取

京东商品评论爬取

一,页面分析

1.首先,在爬取页面之前,我们需要对这个页面进行一个分析,通过爬取到的源码发现,这些评论信息不存在于源码当中

在这里插入图片描述

并且通过源代码中发现评论信息只存在于第一个id=“comment-0”当中

在这里插入图片描述

因此,我接着分析这个页面,发现这些评论信息在json字符串中

在这里插入图片描述

二,代码解释

2.1 首先导入包模块

import json  # 导入json模块,用于处理JSON数据
from urllib.parse import urlencode  # 导入urlencode函数,用于将字典类型的参数转换为URL编码格式
import requests  # 导入requests模块,用于发送HTTP请求

2.2 json这个包模块案例讲解

import json 是Python中导入json模块的语句。json模块提供了一种很简单的方式来编码和解码JSON数据。

  1. 编码:将Python对象转换为JSON字符串,可以使用 json.dumps() 函数。例如:
import json
data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}
json_data = json.dumps(data)
print(json_data)
输出结果为:{"name": "John", "age": 30, "city": "New York"}
  1. 解码:将JSON字符串转换为Python对象,可以使用 json.loads() 函数。例如:
import json
json_data = '{"name": "John", "age": 30, "city": "New York"}'
data = json.loads(json_data)
print(data)
输出结果为:{'name': 'John', 'age': 30, 'city': 'New York'}

三,实战

在了解这些后,接下来,让我们看看爬取实战,代码如下:

import json
from urllib.parse import urlencode
import requests
import time


class JingDon(object):
    def __init__(self):
        self.url = "https://api.m.jd.com/?"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36"
        }
        self.num = 1

    def data_get_index(self, num):
        parmas = {
            'appid': 'item-v3',
            'functionId': 'pc_club_productPageComments',
            'client': 'pc',
            'clientVersion': '1.0.0',
            't': '1700442878294',
            'loginType': '3',
            'uuid': '122270672.1422075459.1700439487.1700439489.1700442671.2',
            'productId': '12959834',
            'score': '0',
            'sortType': '5',
            'page': num,
            'pageSize': '10',
            'isShadowSku': '0',
            'fold': '1',
            'bbtf': '',
            'shield': '',
        }
        URL = self.url + urlencode(parmas)
        # print(URL)
        resp = requests.get(url=URL, headers=self.headers)
        if resp.status_code == 200:
            return resp.text
        else:
            return None

    def parse_data_index(self, response):
        dict = json.loads(response)
        comments = dict['comments']
        # print(comments)
        for data in comments:
            comment = data['content']
            # print(comment)
            self.save_data_comment(comment)

    def save_data_comment(self, comment):
        a = f"第{self.num}条评论打印完毕!"
        with open('./comment' + '.txt', "a", encoding="utf-8") as f:
            f.write(comment + '\n')
            print(a)
            self.num += 1

    def run(self):
        for num in range(30):
            response = self.data_get_index(num)
            self.parse_data_index(response)


if __name__ == '__main__':
    comment = JingDon()
    comment.run()

结果展示:
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大杯奶绿加少冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值