#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'zhj'

"""
    什么是scrapy？
        它是python爬取网络数据的一个快速、高效开发的框架
        
        比如：
            每次写爬虫文件，都是先搭建好类的框架，再在里面去填充内容，框架相当于
            把类这个模板写好了。
        主要优点：
            1.可同时执行多个爬虫，并发高
            2.可以设置免密登录，以及数据的去重
    scrapy大致的执行流程：
        1.引擎从调度器获取到一个url
        2.引擎将url传递给 下载器
        3.下载器将资源爬取之后，得到response
        4.传递给蜘蛛，让爬虫解析response
            1.如果解析出来的是数据 ---item,则交给pipline进行进一步的处理
            2.解析出的是url，则把url重新交给调度器，等待抓取
    安装scrapy模块：
        使用 pip install -i https://pypi.douban.com/simple scrapy
        
        有一个依赖库： pywin32
        pip install pywin32 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
        
        注意：
            不要使用默认的pip安装方法，最后借助其他服务器，然后 http 必须加s

    
    新建第一个scrapy项目：
        1.切换到项目目录： 
            执行命令： scrapy startproject 项目名称
            这个将会在该路径下创建一个爬虫项目
        
        2.scrapy每个文件作用：
            1. item.py: 定义需要的item类
            2. pipline.py：管道文件，传入item的类，清理数据、保存数据或者输出数据等
            3. setting.py：配置文件，比如之前学的代理、设置并发数据、数据路径
            4.spiders目录：
                这里是存放自定义爬虫的py文件，负责从网页中获得数据
            
            5.middlewares.py:中间件
                1.当咱们引擎传递请求downloads的过程中，可以对请求进行处理
                2.下载器完成http请求之后，传递给响应对象的引擎过程中，也可以对响应对象进行处理
                
            
            
    scrapy.Rquest的参数：
        必须的：
            url: url地址
            callback: 处理响应的函数
        
        常用的：
            headers: 会setting 中的默认headers 进行合并，重复则覆盖，否则就是合并
            meta:用户多个回调函数之间传参用的,是一个字典
            dont_filter: 默认是False,scrapy会自动去除重复
                也就是：
                       url、method和请求参数全都相同，这样的数据，会认为是同一个请求，同一个
                    请求只发送第一次。
                
                如果需要发送重复的请求，将参数改为True
        
        不常用的：
            method：请求方法
            body：请求体
            cookies: 手动输入cookie
            encoding: utf-8
    
    scrapy的response属性：
        1.url
        2.text
        3.xpath()
            response.xpath(xpath表达式)
            1.取多个值，列表
                response.xpath(xpath表达式).extract()
            2.取一个值：
                response.xpath(xpath表达式).extract_first()
    
    
    
    
    
    
    
    
    
    使用scrapy建立项目：
        1.切换目录：
            使用命令： scrapy startproject scrapy201987
        
        2.在pycharm中使用open打开上一步创建好的项目
        
        3.修改setting：
            ROBOTS...  和 HEADERS....
        
        4.在spiders目录下 建立 爬虫模板
            爬取顶点小说网站
            起名与项目相关dingdian.py
        5.在爬虫模块中建立爬虫类，一定要继承scrapy.Spyder
        作用：
            一直重复提交request和编写的回调函数，直到返回结果
        6.在项目根目录建立run.py文件
            1.启动
                命令行：scrapy crawl 项目名
            2.启动
                在项目根路径新建run.py
        7.编写items类
        8.修改setting中pipline配置
            ITEM_PIPLINES = 
        9.到pipline中编写自定义的持久化类，DingdianPipline
            注意：文件名不固定，一般放在settings中
            setting中文件名配置
            SAVE_FILE =
        10.使用scrapy框架
            爬取以下类别的小说
            1.从玄幻魔法到其他小说
            2.书名，作者，字数，状态
        
"""




















































































#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'zhj'

"""
    什么是scrapy？
        它是python爬取网络数据的一个快速、高效开发的框架
        
        比如：
            每次写爬虫文件，都是先搭建好类的框架，再在里面去填充内容，框架相当于
            把类这个模板写好了。
        主要优点：
            1.可同时执行多个爬虫，并发高
            2.可以设置免密登录，以及数据的去重
    scrapy大致的执行流程：
        1.引擎从调度器获取到一个url
        2.引擎将url传递给 下载器
        3.下载器将资源爬取之后，得到response
        4.传递给蜘蛛，让爬虫解析response
            1.如果解析出来的是数据 ---item,则交给pipline进行进一步的处理
            2.解析出的是url，则把url重新交给调度器，等待抓取
    安装scrapy模块：
        使用 pip install -i https://pypi.douban.com/simple scrapy
        
        有一个依赖库： pywin32
        pip install pywin32 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
        
        注意：
            不要使用默认的pip安装方法，最后借助其他服务器，然后 http 必须加s

    
    新建第一个scrapy项目：
        1.切换到项目目录： 
            执行命令： scrapy startproject 项目名称
            这个将会在该路径下创建一个爬虫项目
        
        2.scrapy每个文件作用：
            1. item.py: 定义需要的item类
            2. pipline.py：管道文件，传入item的类，清理数据、保存数据或者输出数据等
            3. setting.py：配置文件，比如之前学的代理、设置并发数据、数据路径
            4.spiders目录：
                这里是存放自定义爬虫的py文件，负责从网页中获得数据
            
            5.middlewares.py:中间件
                1.当咱们引擎传递请求downloads的过程中，可以对请求进行处理
                2.下载器完成http请求之后，传递给响应对象的引擎过程中，也可以对响应对象进行处理
                
            
            
    scrapy.Rquest的参数：
        必须的：
            url: url地址
            callback: 处理响应的函数
        
        常用的：
            headers: 会setting 中的默认headers 进行合并，重复则覆盖，否则就是合并
            meta:用户多个回调函数之间传参用的,是一个字典
            dont_filter: 默认是False,scrapy会自动去除重复
                也就是：
                       url、method和请求参数全都相同，这样的数据，会认为是同一个请求，同一个
                    请求只发送第一次。
                
                如果需要发送重复的请求，将参数改为True
        
        不常用的：
            method：请求方法
            body：请求体
            cookies: 手动输入cookie
            encoding: utf-8
    
    scrapy的response属性：
        1.url
        2.text
        3.xpath()
            response.xpath(xpath表达式)
            1.取多个值，列表
                response.xpath(xpath表达式).extract()
            2.取一个值：
                response.xpath(xpath表达式).extract_first()
    
    
    
    
    
    
    
    
    
    使用scrapy建立项目：
        1.切换目录：
            使用命令： scrapy startproject scrapy201987
        
        2.在pycharm中使用open打开上一步创建好的项目
        
        3.修改setting：
            ROBOTS...  和 HEADERS....
        
        4.在spiders目录下 建立 爬虫模板
            爬取顶点小说网站
            起名与项目相关dingdian.py
        5.在爬虫模块中建立爬虫类，一定要继承scrapy.Spyder
        作用：
            一直重复提交request和编写的回调函数，直到返回结果
        6.在项目根目录建立run.py文件
            1.启动
                命令行：scrapy crawl 项目名
            2.启动
                在项目根路径新建run.py
        7.编写items类
        8.修改setting中pipline配置
            ITEM_PIPLINES = 
        9.到pipline中编写自定义的持久化类，DingdianPipline
            注意：文件名不固定，一般放在settings中
            setting中文件名配置
            SAVE_FILE =
        10.使用scrapy框架
            爬取以下类别的小说
            1.从玄幻魔法到其他小说
            2.书名，作者，字数，状态
        
"""




















































































#!/usr/bin/env python # -*- coding: utf-8 -*- 什么是scrapy？         它是python爬取网络数据的一个快速、高效开发的框架                  比如：             每次写爬虫文件，都是先搭建好类的框架，再在里面去填充内容，框架相当于             把类这个模板写好了。         主要优点：             1.可同时执行多个爬虫，并发高             2.可以设置免密登录，以及数据的去重     scrapy大致的执行流程：         1.引擎从调度器获取到一个url         2.引擎将url传递给 下载器         3.下载器将资源爬取之后，得到response         4.传递给蜘蛛，让爬虫解析response             1.如果解析出来的是数据 ---item,则交给pipline进行进一步的处理             2.解析出的是url，则把url重新交给调度器，等待抓取     安装scrapy模块：         使用 pip install -i https://pypi.douban.com/simple scrapy                  有一个依赖库： pywin32         pip install pywin32 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com                  注意：             不要使用默认的pip安装方法，最后借助其他服务器，然后 http 必须加s           新建第一个scrapy项目：         1.切换到项目目录：              执行命令： scrapy startproject 项目名称             这个将会在该路径下创建一个爬虫项目                  2.scrapy每个文件作用：             1. item.py: 定义需要的item类             2. pipline.py：管道文件，传入item的类，清理数据、保存数据或者输出数据等             3. setting.py：配置文件，比如之前学的代理、设置并发数据、数据路径             4.spiders目录：                 这里是存放自定义爬虫的py文件，负责从网页中获得数据                          5.middlewares.py:中间件                 1.当咱们引擎传递请求downloads的过程中，可以对请求进行处理                 2.下载器完成http请求之后，传递给响应对象的引擎过程中，也可以对响应对象进行处理                                                scrapy.Rquest的参数：         必须的：             url: url地址             callback: 处理响应的函数                  常用的：             headers: 会setting 中的默认headers 进行合并，重复则覆盖，否则就是合并             meta:用户多个回调函数之间传参用的,是一个字典             dont_filter: 默认是False,scrapy会自动去除重复                 也就是：                        url、method和请求参数全都相同，这样的数据，会认为是同一个请求，同一个                     请求只发送第一次。                                  如果需要发送重复的请求，将参数改为True                  不常用的：             method：请求方法             body：请求体             cookies: 手动输入cookie             encoding: utf-8          scrapy的response属性：         1.url         2.text         3.xpath()             response.xpath(xpath表达式)             1.取多个值，列表                 response.xpath(xpath表达式).extract()             2.取一个值：                 response.xpath(xpath表达式).extract_first()                                                  使用scrapy建立项目：         1.切换目录：             使用命令： scrapy startproject scrapy201987                  2.在pycharm中使用open打开上一步创建好的项目                  3.修改setting：             ROBOTS...  和 HEADERS....                  4.在spiders目录下 建立 爬虫模板             爬取顶点小说网站             起名与项目相关dingdian.py         5.在爬虫模块中建立爬虫类，一定要继承scrapy.Spyder         作用：             一直重复提交request和编写的回调函数，直到返回结果         6.在项目根目录建立run.py文件             1.启动                 命令行：scrapy crawl 项目名             2.启动                 在项目根路径新建run.py         7.编写items类         8.修改setting中pipline配置             ITEM_PIPLINES =          9.到pipline中编写自定义的持久化类，DingdianPipline             注意：文件名不固定，一般放在settings中             setting中文件名配置             SAVE_FILE =         10.使用scrapy框架             爬取以下类别的小说             1.从玄幻魔法到其他小说             2.书名，作者，字数，状态