python爬虫-使用Scrapy框架爬取数据


前言

本篇文章主要讲解了Scrapy库的基本使用,使用Scrapy库提取黑马程序员“软件测试自学全套课程”模块的视频名称、学习人数、课程等级和视频评分。


一、实验目的

  1. 了解Scrapy框架的原理;
  2. 掌握Scrapy各组成部分及运行流程;
  3. 掌握如何使用Scrapy框架爬取网站数据。

二、实验内容

本次实验使用Scrapy对网站数据进行收集,通过本实验掌握Scrapy项目的创建、运行及具体使用。

三、实验原理

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

四、 Scrapy库提取“软件测试自学全套课程”信息

1. 安装Scrapy框架;

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scrapy

在这里插入图片描述
安装成功,查看scrapy的版本信息为:Scrapy2.12.0
在这里插入图片描述

2. 创建Scrapy项目;

创建Scrapy项目名为:qxx,项目路径在 C:\Users\17181\qxx,为了方便操作,改一下路径放在桌面

scrapy startproject qxx

在这里插入图片描述
Scrapy项目的目录结构
在这里插入图片描述

3. 分析网页,实现爬取逻辑;

软件测试自学全套课程:https://yun.itheima.com/map/72.html

在这里插入图片描述
在这里插入图片描述
浏览器显示了软件测试视频的相关信息,包括视频名称、学习人数、课程等级、视频评分。通过浏览器开发者工具还可看到视频对应的链接地址。这里的视频名称、学习人数、课程等级、视频评分就是我们需要抓取的目标数据。

4. 定义Item容器;

在这里插入图片描述
接下来通过 scrapy genspider 命令来创建一个爬虫:

scrapy genspider software_test_info itheima.com

注意:

  1. itheima.com是黑马程序员官方网站的域名。
  2. software_test_info 是爬虫的名称。这个名称有以下几点讲究:
    唯一性:爬虫名称在项目中必须是唯一的,不能与项目中的其他爬虫名称重复。
    命名规范:通常使用小写字母和下划线组合,避免使用大写字母和特殊字符,以符合 Python 的命名规范。
    描述性:名称应尽量描述爬虫的功能或目标,以便于理解和管理。例如,software_test_info 表示这个爬虫可能是用于爬取软件测试相关信息的。

在这里插入图片描述
在这里插入图片描述

5. 运行Scrapy项目。

import scrapy
from qxx.items import QxxItem 

class SoftwareTestInfoSpider(scrapy.Spider):
    name = "software_test_info"
    allowed_domains = ["itheima.com"]
    start_urls = ["https://yun.itheima.com/map/72.html"]

    def parse(self, response):
        # 选择所有视频信息的节点
        node_list = response.xpath('/html/body/div[4]/div[2]/div/div[2]/div[11]//li') 
        for each in node_list:
            item = QxxItem()  # 创建 QxxItem 对象
            
            title = each.xpath("./a/h2/text()").get()  # 视频名称
            number = each.xpath("./a/div[2]/p/text()").get()  # 学习人数
            level = each.xpath("./a/div[2]/span[1]/text()").get()  # 课程等级
            rating = each.xpath("./a/div[2]/span[2]/text()").get()  # 视频评分
            
            # 将每个视频的信息存储到 item 对象中
            item["title"] = title
            item["number"] = number
            item["level"] = level
            item["rating"] = rating
            
            # 使用 yield 返回 item,Scrapy 
            yield item

确保 QxxItem 类在 qxx.items 模块中定义
在这里插入图片描述
在命令行中运行以下命令来启动爬虫:

scrapy crawl software_test_info -o qxx.json

这将启动爬虫并将提取的数据保存到qxx.json文件中。
在这里插入图片描述
在这里插入图片描述
输出成功
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值