Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
写在前面
之前一直采用Scrapy框架中的基础爬虫,但是除此之外,Scrapy提供了多种爬虫,用于满足不同的需求,这里对内置爬虫做一个更加深入的认识,同时开始学习Crawl Spider的使用方法。
初探Crawl Spider
打开cmd命令行程序,通过cd命令进入之前的项目文件,通过以下命令查看Scrapy框架中提供的所有内置爬虫类型。
C:\Users\Lenovo\Desktop\search_scrapy>scrapy genspider -l
Available templates:
basic
crawl
csvfeed
xmlfeed
其中basic就是之前使用的基础爬虫;在官方给出的说明文档中,crawl的释义是用来爬取结构有规律的网站;其余的两个内置爬虫适合用来爬取文件项目等,在此不做详细介绍。
接下来从创建Crawl Spider项目开始,对Crawl Spider的使用进行学习。
创建Crawl Spider项目
同样在命令行程序中进入之前的项目文件目录,通过命令创建新的Crawl Spider文件。
C:\Users\Lenovo\Desktop\search_scrapy>scrapy genspider -t crawl search_crawl csdn.com
Created spider ‘search_crawl’ using template ‘crawl’ in module:
search_scrapy.spiders.search_crawl
这里对使用到的命令做一个简单的解释,genspider是shell的另外一个命令,-t指代的是template,即以当前爬虫项目为模板生成新的爬虫文件,crawl给出了爬虫文件类型,随后是爬虫文件的命名以及爬虫项目允许的域名。
随后我们可以在项目目录中找到新创建好的crawl爬虫文件。
现在查看一下当前项目中存在的爬虫。
C:\Users\Lenovo\Desktop\search_scrapy>scrapy list
search
search_crawl
和预想的一样,项目中增加了一个名字为search_crawl的爬虫。
对比Basic与Crawl
还记得最初创建爬虫项目时,爬虫文件中自带的框架有哪些吗?
search_basic.py_(Basic类型的爬虫文件初识状态)
# -*- coding: utf-8 -*-
import scrapy
class SearchBasicSpider(scrapy.Spider):
name = 'search_basic'
allowed_domains = ['example.com']
start_urls = ['http://example.com/']
def parse(self, response):
pass
接下来查看新创建的Crawl类型的爬虫文件自带的框架结构。
search_crawl.py_(Crawl类型的爬虫文件初识状态)
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
class SearchCrawlSpider(CrawlSpider):
name = 'search_crawl'
allowed_domains