小白入门!Python采集京东商品评论,手把手教你保存至本地

2 阅读4分钟

不知道各位网购的时候,是否会特意留意商品评价?有的小伙伴看到差评就直接放弃购买,有的会理性分析差评原因,还有一部分小伙伴则完全不在意。而京东作为国内顶尖的电商平台,积累了海量的商品评论数据,这些数据不仅能帮消费者做出更明智的购买决策,对企业做产品优化、市场调研也有着重要意义。

今天就给各位小白带来福利,手把手教大家用Python采集京东商品评论,并且将采集到的评论数据保存到本地,全程步骤清晰、代码可直接复制,零基础也能轻松上手,不用怕踩坑!

一、采集前的准备工作

要采集京东商品评论,我们主要用到Python的爬虫技术,不用复杂的框架,掌握几个基础库就能搞定。首先,我们需要明确两个核心准备点:

  1. 确定目标商品ID:京东上每个商品都有唯一的ID,这个ID可以从商品链接中提取。比如某商品链接为pro.jd.com/mall/active…

  2. 安装所需Python库:我们需要用到requests(发送网络请求)、BeautifulSoup(解析网页)、fake_useragent(对抗反爬)等库,打开命令行,输入以下命令即可安装:

pip install requests beautifulsoup4 fake_useragent pillow pytesseract

二、应对京东反爬:小白必看技巧

京东有一定的反爬机制,直接采集很容易被封禁IP,小白们一定要记住这3个反爬小策略,降低被封禁的风险:

  1. 设置随机User-Agent:模拟不同浏览器访问,避免使用固定User-Agent被识别,代码示例如下:
import requests
from fake_useragent import UserAgent

# 生成随机User-Agent
ua = UserAgent()
headers = {'User-Agent': ua.random}
# 发送请求时携带headers
response = requests.get(url, headers=headers)
  1. 使用代理IP:隐藏真实IP地址,避免频繁访问被封禁,示例代码如下:
import requests

# 代理IP信息(可替换为自己的代理)
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"

# 构建代理格式
proxyMeta = "https://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host": proxyHost,
    "port": proxyPort,
    "user": proxyUser,
    "pass": proxyPass,
}

# 设置代理
proxies = {
    "http": proxyMeta,
    "https": proxyMeta,
}

# 携带代理发送请求
response = requests.get(url, proxies=proxies, headers=headers)
  1. 处理验证码(可选):如果采集时遇到验证码,可使用pytesseract和Pillow库自动识别,示例代码如下:
import requests
from PIL import Image
import pytesseract

# 下载验证码图片(替换为实际验证码链接)
captcha_url = 'https://captcha_url'
response = requests.get(captcha_url, headers=headers)
with open('captcha.png', 'wb') as f:
    f.write(response.content)

# 识别验证码
captcha_image = Image.open('captcha.png')
captcha_text = pytesseract.image_to_string(captcha_image)

# 发送带验证码的请求(根据实际接口调整参数)
data = {'captcha': captcha_text}
response = requests.post(url, data=data, headers=headers)

三、核心步骤:采集京东商品评论

做好反爬准备后,我们就可以开始采集评论了,这里用BeautifulSoup库解析网页,提取评论内容,步骤如下:

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import time

# 1. 配置参数
ua = UserAgent()
headers = {'User-Agent': ua.random}
# 替换为目标商品的URL(可通过商品ID构建)
url = "https://pro.jd.com/mall/active/CeT1FQriLPDZW5mtPdKjYBMEz3L/index.html"
# 设置代理(可选,根据自身情况调整)
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"
proxyMeta = "https://%(user)s:%(pass)s@%(host)s:%(port)s" % {
    "host": proxyHost,
    "port": proxyPort,
    "user": proxyUser,
    "pass": proxyPass,
}
proxies = {"http": proxyMeta, "https": proxyMeta}

# 2. 发送请求,获取网页内容
try:
    # 增加延时,避免高频请求
    time.sleep(2)
    response = requests.get(url, headers=headers, proxies=proxies, timeout=15)
    response.encoding = 'utf-8'  # 解决中文乱码问题
    # 3. 解析网页,提取评论数据
    soup = BeautifulSoup(response.text, "html.parser")
    # 找到评论所在的标签(根据京东网页结构调整class属性)
    comment_list = soup.find_all("div", class_="comment-content")
    # 提取评论内容
    comments = [comment.text.strip() for comment in comment_list]
    print(f"共采集到 {len(comments)} 条评论")
except Exception as e:
    print(f"采集失败:{str(e)}")

四、最后一步:将评论保存至本地

采集到评论后,我们将其保存到本地文件(txt格式),方便后续查看和分析,代码非常简单,直接添加到上面的代码后面即可:

# 保存评论到本地txt文件
with open("京东商品评论.txt", "w", encoding="utf-8") as file:
    for i, comment in enumerate(comments, 1):
        file.write(f"评论{i}{comment}\n\n")
print("评论已成功保存至本地!")

补充说明:小白们在操作时,可根据实际情况调整商品URL、代理信息和评论标签的class属性(京东网页结构可能会有微调,可通过浏览器开发者工具查看评论对应的标签)。全程按照步骤操作,就能轻松采集京东商品评论并保存到本地,赶紧动手试试吧!tg:@some1899