• 2.Scrapy基本命令介绍


    1.安装scrapy框架

    a.安装wheel
    pip install wheel -i https://pypi.douban.com/simple/ 
    b.安装twisted
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ Twisted
    c.安装scrapy
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ Scrapy
    d.安装pywin32
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ pywin32

    2.基本命令介绍

    (1)新建项目

    scrapy startproject 项目名
    要在spiders包下新建一爬虫源文件 ------》创建爬虫文件
    (1)cd 项目名
    (2)scrapy genspider 爬虫文件名 域名 
    #注意爬虫文件名不可以和项目名相同。(可以有多个spider)

    (2)运行爬虫:

    #运行名为 spider文件名 的爬虫
    scrapy crawl spider文件名 (注意:不要加.py后缀名)
    #将爬到的数据导出为json文件
    scrapy crawl spider文件名 -o xx.json
    #也可导出csv文件
    scrapy crawl spider文件名 -o xx.csv -t csv
    #单独运行爬虫文件
    scrapy runspider xx.py #区别:单独运行要进入到spider目录里,不走项目的settings的配置,走的全是自己的默认配置。

    注:

    运行scrapy想要直接在spider文件里右键run就运行
    配置:run --->edit configrations---->(1)script path: E:pachongvenvScriptsscrapy.exe(scrapy.exe所在路径) 
    ---->(2)parameters: crawl usnews(crawl 爬虫文件名) 
    ---->(3) working directory: E:爬虫qianfeng3scrapyqianmu(项目的目录)
    后面直接run,就启动项目。

    (3)scrapy shell

    由于数据解析时需要不断的调试,为了方便,可以在控制台里进行调试
    具体方法:scrapy shell [某个url]
    带一个url参数,将会自动请求这个url,并在请求成功后进入控制台。
    控制台使用的是项目环境。

    shell里命令:

    fetch() # 请求url或者request对象,注意请求成功后会将当前作用域内的request和response对象重新赋值。
    def f():
        globals()['request'] = 1
    f()
    #此时再调request就是1了
    #如request在控制台, locals() == globals() locals()是个字典
    d = locals()
    d['request'] = 2
    #request 结果也是2 指向同一个地址空间
    #此时如将request = 3,那么d['request']也跟着变为3 
    view(response) #会将请求页面保存成一个本地文件,可以直观看到爬取的页面
    shelp()  #打印出帮助信息
    spider  #相应的Spider类的实例。有可能是default,有可能是自定义的spider。符合创建规则就是自定义的
    settings  #是个对象,可以获取settings文件里的值
    setting.get("BOT_NAME")
    setting.getbool("HTTPCACHE_ENABLED")
    settings.get("USER_AGENT")  #'Scrapy/2.0.1 (+https://scrapy.org)'在scrapy包里的settings文件中默认设置的。在自己settings文件设置就会覆盖
    crawler crawler  #对象,包含spier,所有中间件、pipline和其他所有的 总称
    #其他都可以通过crawler取出。
    #如crawler.settings
    #一个项目启动只有一个crawler对象,但可以有多个spider对象。
    scrapy  #就是scrapy模块

    例子:
    比如要对某个页面的数据进行提取,不断测试解析的是否正确

    scrapy shell https://url.com #进入控制台,并且爬取这个url
    shelp() #查看可用的命令
    response.xpath() #直接测试

    (4)终端里scrapy命令

    scrapy crawl/runsipder  #启动项目
    scrapy view url名称  #也是一个用项目配置下载网页,用浏览器打开网页-----》一般用在网页是动态的来调试(看抓到的和浏览器看到的是否一样)
    scrapy fetch url名称  #用项目的配置下载网页,输出到控制台上
    srapy list   #列出有多少个spider

    3.Spider介绍

    Spider 是自己定义的类,Scrapy 用它来从网页里抓取内容,并解析抓取的结果。自定义Spider类继承scrapy.Spider,定义 Spider 的名称和起始请求,以及怎样处理爬取后的结果的方法。

    class DiscoverySpider(scrapy.Spider):
        name = 'discovery'
        allowed_domains = ['xinpianchang.com','openapi-vtom.vmovier.com']
        start_urls = ['https://www.xinpianchang.com/channel/index/type-/sort-like/duration_type-0/resolution_type-/page-1']
        
        def parse(self, response):
            pass
    (1)name,它是每个项目唯一的名字,用来区分不同的 Spider。
    (2)allowed_domains,它是允许爬取的域名,如果初始或后续的请求链接不是这个域名下的,则请求链接会被过滤掉。
    (3)start_urls,它包含了 Spider 在启动时爬取的 url 列表,初始请求是由它来定义的。
    (4)parse:   
          Spider 的一个方法。       解析返回的响应、提取数据或者进一步生成要处理的请求。       第一个请求定义在start_requests()方法内,默认从start_urls列表中获得url地址来生成Request请求,默认的回调函数是parse方法。回调函数在下载完成返回response时自动触发       parse返回值4种:(
    yield)         a.包含解析数据的字典         b.Item对象         c.新的Request对象(新的Requests也需要指定一个回调函数)         d.或者是可迭代对象(包含Items或Request)

    4.Item介绍

    Item 是保存爬取数据的容器,它的使用方法和字典类似。不过,相比字典,Item 多了额外的保护机制,可以避免拼写错误或者定义字段错误。
    创建 Item 需要继承 scrapy.Item 类,并且定义类型为 scrapy.Field 的字段。
    创建的Item在自定义的Spider类中被实例化,并且以字典的形式存入解析的数据,然后yield,返回给引擎,再给管道,进行持久化存储。
    注意:yield的数据不做任何操作,会在窗口直接显示。也可以直接导入到文件中。
    

      

    5. Item Pipeline介绍

    Item Pipeline 为项目管道。当 Item 生成后,它会自动被送到 Item Pipeline 进行处理。用 Item Pipeline 来做如下操作:
        (1)清洗 HTML 数据
        (2)验证爬取数据,检查爬取字段
        (3)查重并丢弃重复内容
        (4)将爬取结果储存到数据库
    方法:自定义Pipeline类,里面有open_spider close_spider 和process_spider方法。	
    open_spider和close_spider分别只在创建和关闭spider时调用一次,process_spider则每产生一个item调用一次,主要执行了数据插入操作。
    
     
    

      

  • 相关阅读:
    uva 12169 Disgruntled Judge
    uva 11582 Colossal Fibonacci Numbers!
    ACdream 1073
    ACdream 1061 郭式树
    《构建之法》读书笔记
    南阳oj 素数求和问题
    hdoj Problem-1007 A hard puzzle
    程序员不得不知的 Navicat 实用工具
    Beyond Compare怎么对比图片差异
    教您用Beyond Compare比较十六进制文件
  • 原文地址:https://www.cnblogs.com/yq055783/p/12714284.html
Copyright © 2020-2023  润新知