scrapy 教程

作者: 一曲广陵散 | 来源:发表于2017-03-16 15:57 被阅读131次

    引用
    Scrapy 官方教程

    一,概述

    Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,可以使用于包括数据挖掘,信息处理和存储历史数据等一系列的程序中
    最初是为了页面抓取(网络抓取)所设计的,也可以应用在获取API所返回的数据或者通用的网络爬虫

    二,入门指南

    教程将完成下列任务:
    1,创建一个Scrapy项目;
    2,定义提取的Item
    3,编写爬取网站的spider并且提取Item(即数据)
    4,编写Item Pipeline来存储提取到的Item

    1,安装

    Ubuntu下,pip install Scrapy


    2,创建项目

    在爬取之前,需要创建一个新的Scrapy项目
    scrapy startproject tutorial

    产生的tutorial目录如下

    文件功能:
    scrapy.cfg 项目的配置文件
    tutorial项目的python 模块,之后将在此目录下添加代码
    tutorial/items.py项目中的item文件
    tutorial/pipelines.py项目中的pipelines文件
    tutorial/settings项目中的设置文件
    tutorial/spiders放置spider代码的目录


    3,定义Item

    Item是保存爬取到的数据的容器,使用方法和Python字典类似,并且提供了额外的保护机制来避免拼写错误导致的未定义字段错误
    类似在ORM中做的一样,可以通过创建一个scrapy.Item类,并且定义类型为scrapy.Field的类
    属性来定义一个Item
    首先根据需要从dmoz.org获取到的数据对item进行建模
    需要从dmoz中获取名字,url,和网站的描述
    在item中定义相应的字段,编辑tutorial目录中的items.py文件

    一开始看起来可能有些复杂,但是通过定义item, 可以很方便的使用Scrapy的其他方法,这些方法需要知道item的定义

    3,编写第一个Spider

    Spider是用户编写的用于从单个网站或者一些网站爬取数据的类
    包含了一个用于下载的初始URL,
    如何跟进网页中的链接和如何分析页面中的内容,提取生成Item的方法
    为了创建一个Spider,必须继承scrapy.Spider类,并且定义下面的三个属性:
    name用于区别不同的Spider,该名字必须是唯一的
    start_urls包含了Spider在启动时候进行爬取的url列表,因此,第一个被获取到的页面将是其中之一
    后续的URL则从初始的URL获取到的数据中提取
    parse()是spider的一个方法,被调用的时候,每个初始URL完成下载后生成的Reponse对象将会作为唯一的参数传递给该函数,该方法负责解析返回的数据response data
    提取数据(生成item)和生成需要进一步处理的URL的Request对象

    上面是第一个Spider代码,保存在tutorial/spiders目录下的dmoz_spider.py文件中

    3.1 爬取

    进入项目tutorial的根目录,执行命令启动spider
    scrapy crawl dmoz, dmoz来自类中的name

    crawl dmoz 启动用于爬取,得到两个文件Books, Resources

    Scrapy 为Spider的start_urls属性中的每个URL创建了一个scrapy.Request对象,并且将
    parse方法作为回调函数赋值给了Request
    Request对象经过调用,执行生成scrapy.http.Response对象并且送回给spider的parse()方法

    3.2 提取Item

    Selectors 选择器简介
    从网页中提取数据有很多的方法,Scrapy 使用了一种基于Xpath和Css表达式机制-Scrapy Selectors
    Xpath基本例子:
    /html/head/title选择Html文档中的head标签内的title元素
    /html/head/title/text()选择上面元素中的文字
    //td选择所有的td元素
    //div[@class="mini"]选择所有具有class="mine"属性的div元素
    为了配合使用Xpath,Scrapy 提供了Selector之外,还提供了方法避免每次从response中提取数据时生成selector的麻烦

    Selector有四个基本的方法
    xpath(),传入xpath表达式,返回该表达式所对应的所有节点的selector list列表
    css(), 出入css表达式,返回该表达式所对应的所有节点的selector list
    extract(),序列化该节点为unicode字符串并且返回list
    re(),根据传入的正则表达式对数据进行提取,返回unicode字符串列表

    相关文章

      网友评论

        本文标题:scrapy 教程

        本文链接:https://www.haomeiwen.com/subject/zrdknttx.html