scrapy---爬虫界的django

1介绍

scrapy---爬虫界的django_第1张图片

scrapy架构


引擎(EGINE):引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。大总管,负责整个爬虫数据的流动

调度器(SCHEDULER)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL的优先级队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址

下载器(DOWLOADER) 用于下载网页内容, 并将网页内容返回给EGINE,下载器是建立在twisted这个高效的异步模型上的(效率很高,同时可以发送特别多请求出出)

爬虫(SPIDERS) SPIDERS是开发人员自定义的类,用来解析responses,并且提取items,或者发送新的请求

项目管道(ITEM PIPLINES) 在items被提取后负责处理它们,主要包括清理、验证、持久化(比如存到数据库)等操作

# 下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间,主要用来处理从EGINE传到DOWLOADER的请求request,已经从DOWNLOADER传到EGINE的响应response,你可用该中间件做以下几件事

爬虫中间件(Spider Middlewares)位于EGINE和SPIDERS之间,主要工作是处理SPIDERS的输入(即responses)和输出(即requests)

2.安装     

Windows平台

        可以先试一下,

pip3 install scrapy

如果不成功,用如下方法:

1.安装wheel后,便支持通过wheel文件安装软件,wheel文件官网:https://www.lfd.uci.edu/~gohlke/pythonlibs

pip3 install wheel

2. 

pip3 install lxml
pip3 install pyopenssl

3.下载并安装pywin32:https://sourceforge.net/projects/pywin32/files/pywin32/

 4.下载twisted的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

5.执行pip3 install 下载目录\Twisted-17.9.0-cp36-cp36m-win_amd64.whl

6.pip3 install scrapy

Linux,mac平台

pip3 install scrapy

3.创建scrapy项目--->使用命令   cmd

1.先cd到scrapy项目要保存的文件夹

2.创建项目

    scrapy startproject 项目名字

3创建爬虫 
   

scrapy genspider 爬虫的名字 爬虫的网址

例子 :
    scrapy genspider baidu www.baidu.com

4. 启动爬虫
   

 scrapy crawl cnblogs

也可以在run.py 中写

from scrapy.cmdline import execute

execute(['scrapy', 'crawl', 'cnblogs','--nolog'])

4.scrapy项目目录结构

mysfirstscrapy  # 项目名
    mysfirstscrapy # 包
        spiders    # 包,里面放了自定义的爬虫,类似于app
            __init__.py
            baidu.py  # 百度爬虫
            cnblogs.py#cnblogs爬虫
        items.py      #类似于django的 models表模型,一个个模型类
        middlewares.py # 中间件
        pipelines.py #管道---》写持久化
        settings.py #项目配置文件
    scrapy.cfg  # 项目上线配置

5 scrapy解析数据

1 response对象有css方法和xpath方法
    -css中写css选择器
    -xpath中写xpath选择
2 重点1:
    -xpath取文本内容
    './/a[contains(@class,"link-title")]/text()'
    -xpath取属性
    './/a[contains(@class,"link-title")]/@href'
    -css取文本
    'a.link-title::text'
    -css取属性
    'img.image-scale::attr(src)'
3 重点2:
    .extract_first()  取一个
    .extract()        取所有

 创建爬虫文件分析

 

import scrapy

爬虫类,继承了scrapy.Spider
class CnblogSpider(scrapy.Spider):
        name = "cnblog"      #爬虫的名字
        allowed_domains = ["www.cnblog.com"]      # 允许爬取的域
        start_urls = ["https://www.cnblog.com"]      # 开始爬取的地址

def parse(self, response):
        pass

你可能感兴趣的:(爬虫,scrapy,爬虫)