一、Scrapy 基础知识
Scrapy 是适用于 Python 的一个快速、高层次的屏幕抓取和 web 抓取框架,用于抓取 web 站点并从页面中提取结构化的数据。Scrapy 用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy 是一个框架,可以根据需求进行定制。它也提供了多种类型爬虫的基类,如 BaseSpider、sitemap 爬虫等,最新版本又提供了 web2.0 爬虫的支持。
1、Scrapy 基本模块
(1) 调度器(Scheduler)
调度器,说白了把它假设成为一个
URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是什么,同时去除重复的网址(不做无用功)
。用户可以自己的需求定制调度器。
(2) 下载器(Downloader)下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy 的下载器代码不会太复杂,但
效率高,主要的原因是 Scrapy 下载器是建立在 twisted 这个高效的异步模型上的
(其实整个框架都在建立在这个模型上的)。
(3) 爬虫(Spider)爬虫,是用户最关心的部份。
用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)
。例如使用 Xpath 提取感兴趣的信息。
用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。
(4) 实体管道(Item Pipeline)实体管道,用于接收网络爬虫传过来的数据,以便做进一步处理。例如
验证实体的有效性、清除不需要的信息、存入数据库(持久化实体)、存入文本文件等
。