介绍:Scrapy是一个为了爬取网站数据、提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速抓取。
Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度。

0、说明:
  保存数据的方法有4种(json、jsonl、csv、xml),-o 输出指定格式的文件
  scrapy crawl 爬虫名称 -o aa.json
  在编写Spider时,如果返回的不是item对象,可以通过scrapy crawl 爬虫名称 -o aa.json 爬取数据输出到本地,保存为aa.json文件

1、使用步骤
  1.1 新建项目:scrapy startproject xxx
  1.2 生成爬虫:scrapy genspider aaa "http://www.aaa.com"
  1.3 明确目标:编写items.py,明确要提取的数据
  1.4 编写爬虫:spiders/xx.py,编写爬虫文件,处理请求和响应,以及提取数据(yield item)
  1.5 存储内容:pipelines.py,编写管道文件,处理spider返回的item数据
  1.6 设置配置:settings.py, 启动管道组件,以及其他相关配置
  1.7 执行爬虫:scrapy aaa 爬虫名称

2、安装:
  pip3 install scrapy

3、命令
  scrapy bench 测试
  scrapy fetch "http://www.baidu.com" 爬取页面
  scrapy genspider 爬虫名称 'http://www.baidu.com' 生成一个爬虫
  scrapy runspider 运行一个爬虫
  scrapy shell "url地址" 发送完请求后,用shell交互读取响应内容
    response.body 响应体,response.body.decode()
    response.headers 报头
    response.selector Selector对象,此时可以通过response.selector.xpat() 或response.selector.css()来对response进行查询,或者把中间的selector省略也可以使用(新版)
    Selector选择器,有4个基本的方法,最常用xpath
      xpath(),传入xpath表达式,返回该表达式所对应的所有结点的selector list列表,使用方式:response.xpath("表达式")
      extract(),序列化该结点为Unicode字符串并返回列表
      css(),插入css表达式,返回该表达式所对应的所有结点的selector list列表,语法同 bs4
      re(),根据传入的正则表达式进行提取,返回Unicode字符串列表

  scrapy startproject 创建项目
  scrapy list 查看项目下有多少个爬虫

4、其他
  CrawlSpider

5、使用pipeline
  可以有多个,为什么要有多个?
    不同的pipeline处理不同的item的内容
    一个spider的内容可能要做不同的操作,比如存入不同的数据库中
  5.1 一个爬虫项目,包含多个爬虫,爬取多个网站,可以建多个Spider
  5.2 当有多个爬虫,一个pipeline时,如何操作不同的数据呢?
    可以在爬虫返回item时,加:item["come_from"] = '网站1',然后在pipeline的process_item方法里进行判断:if item["come_from"] == '网站1': do something
    或者,根据spider.name来进行判断是哪个spider返回的数据

6、日志logging
  普通用法:
    import logging
    logging.warning()
  scrapy中的用法:
    settings里配置日志级别:LOG_LEVEL = "WARNING"
    settings里配置日志存放位置:LOG_FILE = './log.log' 当前目录
  普通py项目的日志用法
    import logging
    logging.basicConfig(filename='example.log',level=logging.DEBUG) #还有很多参数可以设置
    logger = logging.getLogger(__name__)
    logger.warning("ssssssssss")

scrapy爬虫系列之开头--scrapy知识点的更多相关文章

  1. [Python爬虫] scrapy爬虫系列 <一>.安装及入门介绍

    前面介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分析网页DOM树结构进行爬取内容,同时可以结合Phantomjs模拟浏览器进行鼠标或键盘操作.但是,更 ...

  2. 爬虫系列2:scrapy项目入门案例分析

    本文从一个基础案例入手,较为详细的分析了scrapy项目的建设过程(在官方文档的基础上做了调整).主要内容如下: 0.准备工作 1.scrapy项目结构 2.编写spider 3.编写item.py ...

  3. scrapy爬虫系列之七--scrapy_redis的使用

    功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 简单介绍: 安装:pip3 install scrapy_redis 在scrapy的基础上实现了更多的功能:如reques ...

  4. scrapy爬虫系列之六--模拟登录

    功能点:如何发送携带cookie访问登录后的页面,如何发送post请求登录 爬取网站:bilibili.github 完整代码:https://files.cnblogs.com/files/book ...

  5. scrapy爬虫系列之五--CrawlSpider的使用

    功能点:CrawlSpider的基本使用 爬取网站:保监会 主要代码: cf.py # -*- coding: utf-8 -*- import scrapy from scrapy.linkextr ...

  6. scrapy框架系列 (1) 初识scrapy

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

  7. 爬虫系列4:scrapy技术进阶之多页面爬取

    多页面爬取有两种形式. 1)从某一个或者多个主页中获取多个子页面的url列表,parse()函数依次爬取列表中的各个子页面. 2)从递归爬取,这个相对简单.在scrapy中只要定义好初始页面以及爬虫规 ...

  8. 爬虫系列3:scrapy技术进阶(xpath、rules、shell等)

    本文主要介绍与scrapy应用紧密相关的关键技术,不求很深入,但求能够提取要点.内容包括: 1.xpath选择器:选择页面中想要的内容 2.rules规则:定义爬虫要爬取的域 3.scrapy she ...

  9. scrapy爬虫系列之一--scrapy的基本用法

    功能点:scrapy基本使用 爬取网站:传智播客老师 完整代码:https://files.cnblogs.com/files/bookwed/first.zip 主要代码: ff.py # -*- ...

随机推荐

  1. 在 Mac 上搭建 Nginx PHP Mysql 开发环境

    事实上这个过程跟Linux下安装都几乎相同,仅仅是部分命令有区别,大同小异. 网上看到非常多教程都是用 brew 之类的包管理器安装,可是 Mac 自带了 php , 难道还要再装一个第三方的?强迫症 ...

  2. jquery-插入兄弟元素

    1.after方法 在匹配元素集合中的每个元素的 后面 插入参数所指定的内容,作为其兄弟节点 参数类型说明: 1)普通字符串(可包含各种html标签) $('div').after('html字符串' ...

  3. java web 复选框checked

    熟悉web前端开发的人都知道,判断复选框是否选中是经常做的事情,判断的方法很多,但是开发过程中常常忽略了这些方法的兼容性,而是实现效果就好了.博主之前用户不少方法,经常Google到一些这个不好那个不 ...

  4. VS2010配置HTML5智能提示

    步骤: 1.首先去这里下载安装文件: http://visualstudiogallery.msdn.microsoft.com/d771cbc8-d60a-40b0-a1d8-f19fc393127 ...

  5. Unity+高通Vuforia SDK——AR

    一.AR概念: 增强现实(Augmented Reality,简称AR),是在虚拟现实的基础上发展起来的新技术,也被称之为混合现实.是通过计算机系统提供的信息增加用户对现实世界感知的技术,将虚拟的信息 ...

  6. downtown uptown

    Downtown is a term primarily used in North America by English speakers to refer to a city's core (or ...

  7. python--条件判断和循环--3

    原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 一.if语句 计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户年龄, ...

  8. Java 基本语法----进制、运算符

    进 制 对于整数,有四种表示方式: 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头.十进制:0-9 ,满 10 进 1. 八进制:0-7 ,满 8 进1. 以数字 0 开头表示.十六进制: ...

  9. 7 -- Spring的基本用法 -- 3... Spring 的核心机制 : 依赖注入

    7.3 Spring 的核心机制 : 依赖注入 Spring 框架的核心功能有两个. Spring容器作为超级大工厂,负责创建.管理所有的Java对象,这些Java对象被称为Bean. Spring容 ...

  10. ios开发之--新手引导页的添加

    以往在写启动页面的时候,有时候会直接在启动页里面写,或者自带的vc里面直接写,但是那样并不是很方便,启动页里面往往会添加很多的东西,所以封装成一个单独的类,可以直接使用,即便是后期的更换,或者是其他的 ...