接下来我主要通过一个具体的scrapy实例具体讲解scrapy框架的创建和运行过程。
首先,使用scrapy startproject hello
创建一个hello的scrapy爬虫项目。
此时会生成一个名为hello的文件夹。该文件夹下拥有一个同名的子文件和一个scrapy.cfg的文件。该同名子文件下放置的是爬虫项目的核心代码,scrapy.cfg主要是爬虫项目的配置文件。
这个我使用PyCharm编辑器打开工程文件,工程结构目录如下:
init.py: 爬虫项目的初始化文件,用来对项目做初始化工作。
items.py: 爬虫项目的数据容器文件,用来定义要获取的数据。
pipelines.py: 爬虫项目的管道文件,用来对items中的数据进行进一步的加工处理。
settings.py: 爬虫项目的设置文件,包含了爬虫项目的设置信息。
middlewares.py: 爬虫项目的中间件文件
spiders文件夹下面放置的是爬虫项目中的爬虫部分相关的文件。文件夹下的__init__.py是爬虫项目中爬虫部分的初始化文件,主要对spiders进行初始化。
通过cd
命令进入该爬虫项目的目录,通过命令可以实现对该爬虫项目的管理。
通过scrapy startproject
创建的项目文件,spiders文件夹里面是没有爬虫文件的,需要通过genspider命令创建一个爬虫文件,然后对该爬虫文件进行相应的修改和编写。
以下为命令行操作:
cd hello #进入项目文件
scrapy list #查看爬虫列表,可以发现为空。
scrapy genspider -l #查看当前可以使用的爬虫模版
$ scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
可以看到当前可以使用的爬虫模版有basic、crawl、csvfeed、xmlfeed。
可以基于其中任意一种爬虫模版生成一个爬虫文件,比如可以使用basic模版生成一个爬虫文件,命令格式:
scrapy genspider -t 模版名 新爬虫名 爬取的域名
比如我现在要爬取百度首页,创建一个爬虫文件
$ scrapy genspider -t basic baiduSpider baidu.com
Created spider 'baiduSpider' using template 'basic' in module:
hello.spiders.baiduSpider
$ scrapy list
baiduSpider
通过scrapy list
命令,可以查询到此时已经有一个爬虫文件存在了。此时可以发现工程目录spiders文件夹下面也多了一个baiduSpider.py的爬虫文件。内容如下:
# -*- coding: utf-8 -*-
import scrapy
class BaiduspiderSpider(scrapy.Spider):
name = 'baiduSpider'