Python 语言 用 Scrapy 爬取京东商品详情 价格 / 评论 / 参数

Python阿木 发布于 1 天前 2 次阅读


Scrapy 爬取京东商品详情:价格、评论、参数

随着互联网的快速发展,电子商务已经成为人们生活中不可或缺的一部分。京东作为中国领先的电商平台,拥有海量的商品信息和用户评价。对于商家和消费者来说,了解商品详情(如价格、评论、参数等)对于决策至关重要。本文将介绍如何使用 Scrapy 框架爬取京东商品详情,包括价格、评论和参数等信息。

Scrapy 简介

Scrapy 是一个开源的 Python 爬虫框架,用于抓取网站内容,提取结构化数据。它具有高性能、易于扩展、支持多种中间件和插件等特点。Scrapy 适用于各种数据抓取任务,包括网页抓取、API 调用、社交媒体数据抓取等。

环境搭建

在开始爬取京东商品详情之前,我们需要搭建一个 Scrapy 环境。

1. 安装 Python:确保你的系统中已安装 Python 3.x 版本。
2. 安装 Scrapy:打开命令行,执行以下命令安装 Scrapy:

bash
pip install scrapy

创建 Scrapy 项目

1. 打开命令行,进入你想要创建项目的目录。
2. 执行以下命令创建 Scrapy 项目:

bash
scrapy startproject jd_spider

这将创建一个名为 `jd_spider` 的 Scrapy 项目。

配置 Scrapy 项目

进入 `jd_spider` 目录,编辑 `settings.py` 文件,配置以下参数:

python
设置用户代理
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'

设置请求延迟
DOWNLOAD_DELAY = 1

设置最大重试次数
RETRY_TIMES = 3

设置是否启用自动重试中间件
AUTOTHROTTLE_ENABLED = True

设置自动重试中间件的下载延迟
AUTOTHROTTLE_START_DELAY = 5

设置自动重试中间件的下载延迟增加步长
AUTOTHROTTLE_MAX_DELAY = 60

编写爬虫

在 `jd_spider` 目录下,创建一个名为 `spiders` 的文件夹,并在该文件夹中创建一个名为 `jd_spider.py` 的文件,用于编写爬虫代码。

python
import scrapy

class JdSpider(scrapy.Spider):
name = 'jd_spider'
allowed_domains = ['jd.com']
start_urls = ['https://www.jd.com']

def parse(self, response):
解析商品列表页
product_list = response.css('divJ_goodsList > ul > li')
for product in product_list:
product_url = product.css('a::attr(href)').get()
if product_url:
yield scrapy.Request(url=product_url, callback=self.parse_product)

def parse_product(self, response):
解析商品详情页
product_info = {
'title': response.css('divproductInfo > div.speValue > ul > li::text').get(),
'price': response.css('spanprice::text').get(),
'comments': response.css('spancomment-count::text').get(),
'params': response.css('divproduct-detail > dl::text').getall()
}
yield product_info

运行爬虫

在 `jd_spider` 目录下,打开命令行,执行以下命令运行爬虫:

bash
scrapy crawl jd_spider

这将启动 Scrapy 爬虫,爬取京东商品详情。

数据存储

爬取到的数据可以存储到多种格式中,如 CSV、JSON、SQLite 等。以下是如何将数据存储到 CSV 文件中的示例:

python
import csv

def save_to_csv(data, filename='jd_products.csv'):
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = ['title', 'price', 'comments', 'params']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for row in data:
writer.writerow(row)

在 `parse_product` 方法中,将解析到的商品信息添加到列表中,并在爬虫结束时调用 `save_to_csv` 函数将数据保存到 CSV 文件中。

总结

本文介绍了如何使用 Scrapy 爬取京东商品详情,包括价格、评论和参数等信息。通过编写爬虫代码,我们可以轻松地获取到所需的数据,并将其存储到本地文件中。在实际应用中,可以根据需求对爬虫进行扩展和优化,以满足不同的数据抓取需求。