zoukankan      html  css  js  c++  java
  • scrapy 框架基本使用

    scrapy简介:
    Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。
    其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试

    一.基本使用
    1. scrapy startproject 项目名称
    - 在当前目录中创建中创建一个项目文件(类似于Django)
    -cd 项目名称 进入项目目录

    2. scrapy genspider [-t template] <name> <domain>
    - 创建爬虫应用
    如:
    scrapy gensipider -t basic oldboy oldboy.com
    scrapy gensipider -t xmlfeed autohome autohome.com.cn
    PS:
    查看所有命令:scrapy gensipider -l
    查看模板命令:scrapy gensipider -d 模板名称

    3. scrapy list
    - 展示爬虫应用列表

    4. scrapy crawl 爬虫应用名称 --nolog
    - 运行单独爬虫应用
    -----------------------------------------------------
    二.项目结构

    project_name/
       scrapy.cfg
       project_name/
           __init__.py
           items.py
           pipelines.py
           settings.py
           spiders/
               __init__.py
               爬虫1.py
               爬虫2.py
               爬虫3.py 
      文件说明:
    • scrapy.cfg  项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
    • items.py    设置数据存储模板,用于结构化数据,如:Django的Model
    • pipelines    数据处理行为,如:一般结构化的数据持久化
    • settings.py 配置文件,如:递归的层数、并发数,延迟下载等
    • spiders      爬虫目录,如:创建文件,编写爬虫规则

    -----------------------------------------------------------------------------------------------------

    三.xpath选择器基本// 子子孙孙.// 当前子/ 儿子

    /div[@id="i1"] 儿子中div标签切id为i1
    /div[@id="i1"]/text() 获取某个标签的文本
    obj.extract() 列表中每个字符串=》[]
    obj.extract.first() 列表中每个字符串=》列表第一个元素

    运用url做选择
    // a[re:test(@href,"/all/hot/recent/d+")]/@href

    注:可在Chrome浏览器审查元素中,选中并copy xpath
    css选择器略...
    ------------------------------------------------------------------
    四. scrapy shell

      用法:
    scrapy shell www.baidu.com(domin)
      优点:调试作用域固定在domin上,调试个别代码不用启动整个框架,从而减少调试时间



    五.常用函数
    • Request是一个封装用户请求的类,在回调函数中yield该对象表示继续访问
    • HtmlXpathSelector用于结构化HTML代码并提供选择器功能

       res = HtmlXpathSelector(response).select()

      六.增加main,debug整框架

       

    from scrapy.cmdline import execute
    import sys
    import os
    
    sys.path.append(os.path.dirname(os.path.abspath(__file__)))
    execute(["scrapy", "crawl", "chouti", "--nolog"])
    

      

  • 相关阅读:
    day14(xml 编写及解析)
    day11(多线程,唤醒机制,生产消费者模式,多线程的生命周期)
    day13(反射,BeanUtils包)
    day10(IO流汇总)
    day08(File类 ,字节流)
    day08(异常处理,创建异常,finally,throws和throw的区别)
    [SPOJ-PT07J] Query on tree III (主席树)
    [ZJOI2008] 树的统计(树链剖分)
    长链剖分学习笔记
    [BZOJ4260] Codechef REBXOR (01字典树,异或前缀和)
  • 原文地址:https://www.cnblogs.com/jum-bolg/p/10847559.html
Copyright © 2011-2022 走看看