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

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/pythonbao/p/9170343.html
Copyright © 2011-2022 走看看