(三)Scrapy框架

1.Scrapy框架简介

  Scrapy是一个为爬取网站数据、提取结构性数据而设计的应用程序框架,它可以应用在广泛领域:Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。

  前面数据采集流程: url地址->发起请求(requests urllib)-->response(json html/css 代码)--->解析(lxml xpath 正则表 达式 bs4)--存储数据(csv文件 数据中)

  scrapy:上面的整个的流程全部都交给框架去做 流水线 自动化 url ------------------目标数据

2.Scrapy框架架构

 

 

 

scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、 数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列, 入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取 到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并 将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过 滤、存储等)的地方。

Downloader Midlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider 中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)。

 

3.Scrapy框架安装

 3.1 cmd以管理员方式运行。

> pip install scrapy  安装
> scrapy version  验证

 3.2 加载Scrapy(PyCharm)

 

4.Scrapy简单实例

  目标:打开百度首页,把 '百度一下,你就知道' 抓取下来,从终端输出。

 4.1创建项目Baidu 和 爬虫文件baidu

1. scrapy startproject Baidu  # 创建爬虫项目: scrapy startproject 项目名
2. cd Baidu  # cd 项目文件
3. scrapy genspider baidu www.baidu.com  # 创建爬虫文件:scrapy genspider 文件名 域名

 

 4.2编写爬虫文件baidu.py,xpath提取数据

# -*- coding: utf-8 -*-
import scrapy  # 导库


class BaiduSpider(scrapy.Spider):  
    name = 'baidu'      # 爬虫名 : scrapy crawl 爬虫名
    allowed_domains = ['www.baidu.com']     # 允许爬取的域名
    start_urls = ['http://www.baidu.com/']      # 起始URL地址

    def parse(self, response):
        # response为百度的响应对象
        r_list = response.xpath('/html/head/title/text()').get()  # 1.6版本后可使用get()获取。

        print('*'*50)
        print(r_list)  # 输出
        print('*'*50)

 

 4.3全局配置settings.py

# 1.定义User-Agent
USER_AGENT = 'Mozilla/5.0'
# 2.是否遵循robots协议,一定要设置为False
ROBOTSTXT_OBEY = False
# 3.请求头,此处也可以添加User-Agent
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
} 

 4.4创建begin.py(和scrapy.cfg同目录)

from scrapy import cmdline

cmdline.execute('scrapy crawl baidu'.split())

 4.5启动爬虫

运行 begin.py 文件

 

posted @ 2020-06-25 15:06  九五二七_唐伯虎  阅读(165)  评论(0编辑  收藏  举报