26个数据分析案例——第五站:基于Scrapy的架构的数据采集
案例环境
- Python: Python 3.x;
数据说明
- title:课程标题
- image_url:标题图片地址。
- properties:课程性质。
- stage:课程阶段。
- enrollment:课程报名人数。
资料包
链接:https://pan.baidu.com/s/1-DUUUAOfpC4Gs5DAaHcgUg
提取码:5u6s
实验步骤
第一步:页面分析
在爬取某个网页中的数据之前,首先要学会如何去分析其页面的结构,我们想要的数据都在那个标签中,只有充分了解页面的整体结构才能够有效且快速的爬取数据。,本次实战案例将爬取慕课往的页面数据。
1、首先打开浏览器输入网址http://www.imooc.com/course/list
进入慕课网
2、在该页面任意空白区域,单击右键显示工具菜单,效果为:
3、单击“查看网页源代码(V)”查看网页源代码中的数据结构,并分析结构
从图中可以清晰的看出,
- 每门课程的详细信息都包含在一个class名为“item free”的a标签中,
- 课程标题包含在class为title ellipsis2的p标签中;
- 课程正处于的阶段和报名的总人数包含在class为one的p标签中;
- 课程性质被包含在class为“1”的span标签中;
- 标题图片地址为class为“img”div标签的style属性值中。
至此我们已经对页面中的数据结构有了一定的了解,下面我们就开始进行数据的采集。
第二步 编写代码采集数据
1、打开命令窗口,创建一个名为“InternetWorm”的Scrapy爬虫项目,命令如下所示。
scrapy startproject InternetWorm
结果为:
2、项目创建完成后进入InternetWorm项目的根目录,代码如下所示。
cd InternetWorm
scrapy genspider MySpider www.imooc.com/course/list
结果如图。
打开根目录中 的MySpider.py,并编写以下代码。
# -*- coding: utf-8 -*-
import scrapy
class MyspiderSpider(scrapy.Spider):
name = 'MySpider'
allowed_domains = ['imooc.com']
start_urls = ['http://www.imooc.com/course/list/']
def parse(self, response):
pass
3、打开items.py ,在改文件中创建名为“CourseItem”的类,并定义好要爬取数据的相关字段。
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html
import scrapy
class ScrapyprojectItem(scrapy.Item):
# define the fields for your item here like:
# name = scrapy.Field()
pass
class CourseItem(scrapy.Item):
# 课程标题
title=scrapy.Field();
# 标题图片地址
image_url=scrapy.Field();
# 课程性质
properties=scrapy.Field();
# 课程阶段
stage=scrapy.Field();
# 课程报名人数
enrollment=scrapy.Field();