京东商品爬虫:使用 Scrapy 提取商品信息并存储到 JSON 文件

本教程将介绍如何使用 Python 的 Scrapy 库爬取京东网站上的商品信息,并将其存储到 JSON 文件中。我们将学习如何获取商品名称、价格和链接,并使用 JSON 格式进行数据保存。

代码示例

import scrapy
import json

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

    def parse(self, response):
        # 获取所有商品的链接
        links = response.css('.cate_menu_item a::attr(href)').extract()
        for link in links:
            yield scrapy.Request(link, callback=self.parse_category)

    def parse_category(self, response):
        # 获取该分类下所有商品的链接
        links = response.css('.gl-item .p-name a::attr(href)').extract()
        for link in links:
            yield scrapy.Request(link, callback=self.parse_product)

    def parse_product(self, response):
        # 获取商品的名称、价格和链接
        name = response.css('.sku-name::text').extract_first().strip()
        price = response.css('.price .price::text').extract_first().strip()
        link = response.url

        # 存储到 JSON 文件中
        with open('products.json', 'a') as f:
            json.dump({'name': name, 'price': price, 'link': link}, f)
            f.write('\n')

运行爬虫

  1. 确保你已经安装了 Scrapy 库。
  2. 使用以下命令运行爬虫:
scrapy crawl jd -o products.json

代码说明

  1. 导入库:导入 scrapyjson 库。
  2. 定义 Spider 类:定义一个名为 JDSpider 的 Spider 类,并设置其属性:
    • name:爬虫的名称。
    • allowed_domains:允许爬取的域名。
    • start_urls:爬虫开始的 URL 列表。
  3. 定义 parse() 方法:定义 parse() 方法,该方法负责处理起始页面的内容,并生成新的请求以爬取其他页面。在本例中,它获取所有商品分类的链接,并生成新的请求以爬取每个分类页面。
  4. 定义 parse_category() 方法:定义 parse_category() 方法,该方法负责处理分类页面的内容,并生成新的请求以爬取该分类下的所有商品页面。在本例中,它获取所有商品的链接,并生成新的请求以爬取每个商品页面。
  5. 定义 parse_product() 方法:定义 parse_product() 方法,该方法负责处理商品页面的内容,并提取商品的名称、价格和链接,并将这些信息存储到 JSON 文件中。
  6. 将数据存储到 JSON 文件:使用 json.dump() 方法将提取到的商品信息存储到 products.json 文件中。

注意事项

  • 为了避免对网站造成过大的负载,请在爬取时控制爬取速度。
  • 爬取前请仔细阅读网站的机器人协议,并确保你的爬取行为符合网站的规定。
  • 本教程仅供学习参考,请勿用于任何违法行为。
京东商品爬虫:使用 Scrapy 提取商品信息并存储到 JSON 文件

原文地址: https://www.cveoy.top/t/topic/oeSt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录