zoukankan      html  css  js  c++  java
  • scrapy (三)各部分意义及框架示意图详解

    一、框架示意图

    ScrapyPython 编写一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

     

     wps1F4.tmp

     

    二、爬虫人员的主要工作

     

    1、创建一个Scrapy项目

    2、定义提取的Item

    3、编写爬取网站的 spider 并提取 Item

    4、编写 Item Pipeline 来存储提取到的Item(即数据)

     

    三、scrapy基本流程

     

     

     

     

     

    四、scrapy 框架各部分详解

    1、 Scrapy Items 定义您想抓取的数据

    import scrapy

    class TorrentItem(scrapy.Item):

        name = scrapy.Field()

    2、spiders:编写提取数据的Spider

    1定义初始URL根网址 针对后续链接的规则以及从页面中提取数据的规则(即写正则或xpath等等)

    2执行spider,获取数据

    运行spider来获取网站的数据,并以JSON格式存入到scraped_data.json 文件中:

    terminalscrapy crawl mininova -o scraped_data.json

    3、编写 item pipeline item存储到数据库中

    注:

    1ItemSpider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item的处理

    2每个item pipeline组件(有时称之为“Item Pipeline”)是实现了简单方法的Python类。他们接收到Item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或是被丢弃而不再进行处理。

    3item pipeline的一些典型应用:

    a)清理HTML数据

    b)验证爬取的数据(检查item包含某些字段)

    c)查重(并丢弃)

    4)将爬取结果保存到数据库中

    4、编写自己的item pipeline

    注:每个item pipiline组件是一个独立的Python类,同时必须实现以下方法:

    1process_item(item, spider)

    每个item pipeline组件都需要调用该方法,这个方法必须返回一个 Item (或任何继承类)对象, 或是抛出 DropItem 异常,被丢弃的item将不会被之后的pipeline组件所处理。

    参数:

    item (Item 对象) – 被爬取的item

    spider (Spider 对象) – 爬取该itemspider

    2open_spider(spider)

    spider被开启时,这个方法被调用。

    参数:spider (Spider 对象) – 被开启的spider

    3close_spider(spider)

    spider被关闭时,这个方法被调用

    参数:spider (Spider 对象) – 被关闭的spider

    5、查看提取到的数据

    执行结束后,查看 scraped_data.json , 将看到提取到的item:

     1由于 selectors 返回list, 所以值都是以list存储的(除了 url 是直接赋值之外)

    2 Item Loaders 可以保存单个数据或者对数据执行额外的处理

     

     

     

    欢迎关注小婷儿的博客:

    csdnhttps://blog.csdn.net/u010986753

    博客园:http://www.cnblogs.com/xxtalhr/

     

    有问题请在博客下留言或加QQ群:483766429 或联系作者本人 QQ 87605025

     

    OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16HkiuA

    OCM培训说明连接:https://mp.weixin.qq.com/s/7-R6Cz8RcJKduVv6YlAxJA

     

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    小婷儿的python正在成长中,其中还有很多不足之处,随着学习和工作的深入,会对以往的博客内容逐步改进和完善哒。

    重要的事说三遍。。。。。。

     

     

        wps206.tmp    wps216.tmp

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    Redundant Paths 分离的路径(边双连通分量)
    bzoj2208 [Jsoi2010] 连通数(tarjan点双连通分量 // dfs)
    [bzoj3331] [BeiJing2013] 压力(tarjan 点双连通分量)
    [ BZOJ1123 ] BLO(tarjan点双连通分量)
    bitset小总结
    牛客328B Rabbit的工作(1)
    # Codeforces Round #529(Div.3)个人题解
    HDU5957 Query on a graph(拓扑找环,BFS序,线段树更新,分类讨论)
    istringstream()函数的用法
    codeforces 1077F1
  • 原文地址:https://www.cnblogs.com/pythonbao/p/9170343.html
Copyright © 2011-2022 走看看