Scrapy初识
- 概述
scrapy是一个为了能够爬取网站数据,提取数据结构而编写的一个应用框架只需要写少量的代码就能实现快速抓取。scrapy使用了twisted 异步网络框架,可以加快我们的下载速度。
-
工作流程,如下图所示
-
windows 下安装scrapy
直接使用命令:python -m pip install scrapy -i https://pypi.douban.com/simple
- 创建项目
使用 scrapy startproject 项目名称 创建项目:
scrapy startproject test
然后根据提示cd test
,然后scrapy genspider test test.com
,一个简单的框架就创建好了,如下所示:
画红色框就是我们需要自己写的代码(如工作流程图所示)
- 启动爬虫: scrapy crawl name(注意启动时应 先cd到 项目目录)
- 如果加header头,在settings文件里面加
- 调试
在启动爬虫时后面加 --nolog,如:
scrapy crawl test --nolog
使用logger调试
首先在settings里面加上loggoer的级别
然后在爬虫文件导入:
最后直接使用就可以了(使用logging之后,启动时就不用加 --nolog了):
- 简单使用(extract和extract_first)
scrapy 使用
- 创建项目(创建方法如上所述)
#创建基本项目
scrapy startproject qianqianxiaoshuo
#创建基本的spider
scrapy genspider qianqian xqianqianxs.com
创建之后如下所示 qianqianxiaoshuo目录下的spider.py如下所示:
# -*- coding: utf-8 -*-
import scrapy
class QianqianSpider(scrapy.Spider):
name = 'qianqian'
allowed_domains = ['xqianqianxs.com']
start_urls = ['https://www.xqianqianxs.com/list/1-1.html']
def parse(self, response):
pass
#创建crawlspider(下文介绍crawspider的使用)
scrapy genspider -t crawl qianqian xqianqianxs.com
- 配置文件设置头信息和user-agent等。这些信息可以在中间件中重新设置(如下中间件使用)
中间件的使用
- 在items里面定义模型类,包含必要的字段可以随时添加。如下:
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html
import scrapy
class QianqianxiaoshuoItem(scrapy.Item):
# define the fields for your item here like:
novel_name = scrapy.Field()
novel_author = scrapy.Field()
novel_intro = scrapy.Field()
novel_cover = scrapy.Field()
items里面定义完之后,在爬虫文件里面需要这样使用:
from ..items import QianqianxiaoshuoItem #引入
class QianqianSpider(scrapy.Spider):
pass
def parse(self, response):
item = QianqianxiaoshuoItem()
# 这里写爬虫相关代码
#这里的novel_name 必须和item里面定义的字段名称一样
item['novel_name'] = '小说名称'
- 爬虫里面爬取数据
我们在parse里面编写我们的爬虫程序,如下:
# -*- coding: utf-8 -*-
import scrapy
from ..items import QianqianxiaoshuoItem