简单有效的京东评论数据爬取,附python代码

点开要爬取评论的商品

记住上面https://item.jd.com/100012043978.html中的100012043978,这是productId

运行下面的python代码

import requests

class Jdcomment_spider(object):

    # 请求头
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
    }

    def __init__(self, file_name='jd_commet'):
        # 实例化类的时候运行初始化函数
        # 打开文件
        self.fp = open(f'./{file_name}.txt', 'w', encoding='utf-8')

        print(f'正在打开文件{file_name}.txt文件!')


    def parse_one_page(self, url):
        # 指定url
        url = 'https://club.jd.com/comment/productPageComments.action?productId=100012043978&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&rid=0&fold=1'

        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36'
        }

        # 发起请求
        response = requests.get(url, headers=self.headers)
        # 获取响应
        js_data = response.json()

        # 提取评论列表
        comments_list = js_data['comments']

        for comment in comments_list:
            # 商品id
            goods_id = comment.get('id')
            # 用户昵称
            nickname = comment.get('nickname')
            # 评分
            score = comment.get('score')
            # 商品尺寸
            productSize = comment.get('productSize')
            # 商品颜色
            productColor = comment.get('productColor')
            # 评论时间
            creationTime = comment.get('creationTime')
            # 评论内容
            content = comment.get('content')
            content = content.replace('\n', ' ') #处理换行符

            print(content)

            # 循环写出数据
            self.fp.write(f'{goods_id}\t{nickname}\t{score}\t{productSize}\t{productColor}\t{creationTime}\t{content}\n')


    def parse_max_page(self):
        for page_num in range(5):  # 抓包获得最大页数
            # 指定通用的url模板
            new_url = f'https://club.jd.com/comment/productPageComments.action?productId=100012043978&score=0&sortType=5&page={page_num}&pageSize=10&isShadowSku=0&rid=0&fold=1'

            print(f'正在获取第{page_num}页')

            # 调用函数
            self.parse_one_page(url=new_url)


    def close_files(self):
        self.fp.close()
        print('爬虫结束,关闭文件!')


if __name__ == '__main__':
    # 实例对象
    jd_spider = Jdcomment_spider()
    # 开始爬虫
    jd_spider.parse_max_page()
    # 关闭文件
    jd_spider.close_files()

这样九成功爬取,并把爬取到的评论保存到了jd_commet文本文档中

如果要爬取别的商品,只需要把网址中的productId,替换带掉代码中url中的productId即可

https://item.jd.com/100012043978.html

url = 'https://club.jd.com/comment/productPageComments.action?productId=100012043978&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&rid=0&fold=1'

【小声说,之前一直找不到productPageComments,被安利了这个,试了试很管用,于是决定分享给大家欢迎大家讨论】

Python爬虫用于从网站上抓取数据,获取京东商品的评价信息通常需要使用到一些网络请求库(如requests、beautifulsoup4或selenium)和解析HTML的库(如lxml)。以下是一个简单的步骤概述: 1. **安装依赖库**: 首先,确保已经安装了`requests`、`lxml`和`beautifulsoup4`。如果没有,可以通过pip安装: ``` pip install requests lxml beautifulsoup4 ``` 2. **模拟请求**: 使用requests库发送GET请求,访问京东商品详情页的URL。例如: ```python import requests url = "https://item.jd.com/商品ID.html" # 将'商品ID'替换为实际的商品ID response = requests.get(url) ``` 3. **解析HTML**: 使用BeautifulSoup解析返回的HTML内容: ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'lxml') ``` 4. **查找评价元素**: 在HTML中找到评价区域的元素,这通常包含用户评论、评分等信息。可能需要根据京东的具体HTML结构定位,这可能涉及CSS选择器或XPath。 5. **提取评价数据**: 一旦找到评价元素,可以从中提取用户昵称、评价内容、评分等信息。例如: ```python comments = soup.find_all('div', class_='comment-item') # 假设评论在'div'元素中,class是'comment-item' for comment in comments: username = comment.find('span', class_='username').text # 用户名 content = comment.find('p', class_='review-text').text # 评论内容 rating = comment.find('i', class_='iconfont icon-star') # 评分 ``` 6. **处理数据和保存**: 将提取的数据存储到文件、数据库或者分析用的数据结构中。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值