scrapy的安装和创建项目

1.什么是scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 
可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

2.安装scrapy

使用命令 pip install scrapy

1.安装过程中可能会出现的错误:

	 building 'twisted.test.raiser' extension
     error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ 			 
     Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

​ 解决方案:

           在网站:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 
           下载twisted对应版本的whl文件(如我的Twisted-17.5.0-cp36-cp36m-win_amd64.whl),cp后面是            
           python版本,amd64代表64位,
           运行命令:
            pip install C:\Users\...\Twisted-17.5.0-cp36-cp36m-win_amd64.whl(下载的位置)
            pip install Scrapy

2.如果还报错:

 win32

​ 解决方案:

pip install  pypiwin32

3.还是报错:

使用anaconda,官网下载anaconda,并安装
			打开anaconda
			点击environments
  			点击not installed
  			输入scrapy
  			apply
  			在pycharm中选择anaconda的环境

3.scrapy项目的创建以及运行

1.创建scrapy项目:

在终端输入命令:scrapy   startproject   +   项目名称

2.项目目录结构:

     spiders 
          __init__.py
          自定义的爬虫文件.py       由我们自己创建,是实现爬虫核心功能的文件
          
     __init__.py                  
    
     items.py                     定义数据结构的地方,是一个继承自scrapy.Item的类
     
     middlewares.py               中间件   代理
     
     pipelines.py				  管道文件,里面只有一个类,用于处理下载数据的后续处理
									默认是300优先级,值越小优先级越高(1-1000)
									
     settings.py				  配置文件  比如:是否遵守robots协议,User-Agent定义等

在这里插入图片描述

3 创建爬虫文件

1)跳转到spiders文件夹中
         cd 项目名字/项目名字/spiders
(2)scrapy  genspider  爬虫文件的名字   域名

4 爬虫文件的介绍

    #爬虫文件的名字  用于启动scrapy项目
    name = 'bd'
    #允许访问域名  如果你访问的域名 不在allowed_domains的里面
    #那么不允许访问  注意一般不加http  如果加也不报错
    allowed_domains = ['www.baidu.com']
    #起始的url  就是你的爬虫文件一运行 就第一次执行的域名
    start_urls = ['http://www.baidu.com/']

5 运行scrapy爬虫文件

 scrapy crawl 爬虫文件的名字

4.scrapy的架构组成

​ (1)引擎

自动运行,无需关注,会自动组织所有的请求对象,分发给下载器

​ (2)下载器

从引擎处获取到请求对象后,请求数据

​ (3)spiders

Spider类定义了如何爬取某个(或某些)网站。
包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。
换句话说,Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。

​ (4)调度器

有自己的调度规则,无需关注

​ (5)管道(Item pipeline)

最终处理数据的管道,会预留接口供我们处理数据
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理。
每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。
他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。
以下是item pipeline的一些典型应用:
         1. 清理HTML数据
         2. 验证爬取的数据(检查item包含某些字段)
         3. 查重(并丢弃)
         4. 将爬取结果保存到数据库中

5.scrapy的工作原理:

1. 引擎向spiders索要URL
2. 引擎将要爬取的URL给调度器
3. 调度器会将URL生成请求对象放入到指定的队列中
4. 从队列中出队一个请求
5. 引擎将请求交给下载器进行处理
6. 下载器发送请求获取互联网数据
7. 下载器将数据返回给引擎
8. 引擎将数据再次给到spiders
9. spiders通过xpath解析该数据,得到数据或者URL
10. spiders将数据或者URL给到引擎
11. 引擎判断该解析结果是数据,还是URL,是数据就交给管道(item pipeline)处理,是URL交给调度器处理给到spiders
9. spiders通过xpath解析该数据,得到数据或者URL
10. spiders将数据或者URL给到引擎
11. 引擎判断该解析结果是数据,还是URL,是数据就交给管道(item pipeline)处理,是URL交给调度器处理

在这里插入图片描述

两张图可以对比着理解

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值