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

 

 

 

 

 

 

 

 

 

 

posted @ 2018-06-11 22:31  小婷儿  阅读(4137)  评论(1编辑  收藏  举报
levels of contents