京东商品爬虫:使用 Scrapy 提取商品信息并存储到 JSON 文件
京东商品爬虫:使用 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')
运行爬虫
- 确保你已经安装了 Scrapy 库。
- 使用以下命令运行爬虫:
scrapy crawl jd -o products.json
代码说明
- 导入库:导入
scrapy和json库。 - 定义 Spider 类:定义一个名为
JDSpider的 Spider 类,并设置其属性:name:爬虫的名称。allowed_domains:允许爬取的域名。start_urls:爬虫开始的 URL 列表。
- 定义
parse()方法:定义parse()方法,该方法负责处理起始页面的内容,并生成新的请求以爬取其他页面。在本例中,它获取所有商品分类的链接,并生成新的请求以爬取每个分类页面。 - 定义
parse_category()方法:定义parse_category()方法,该方法负责处理分类页面的内容,并生成新的请求以爬取该分类下的所有商品页面。在本例中,它获取所有商品的链接,并生成新的请求以爬取每个商品页面。 - 定义
parse_product()方法:定义parse_product()方法,该方法负责处理商品页面的内容,并提取商品的名称、价格和链接,并将这些信息存储到 JSON 文件中。 - 将数据存储到 JSON 文件:使用
json.dump()方法将提取到的商品信息存储到products.json文件中。
注意事项
- 为了避免对网站造成过大的负载,请在爬取时控制爬取速度。
- 爬取前请仔细阅读网站的机器人协议,并确保你的爬取行为符合网站的规定。
- 本教程仅供学习参考,请勿用于任何违法行为。
原文地址: https://www.cveoy.top/t/topic/oeSt 著作权归作者所有。请勿转载和采集!