Scrapy基于python的网页爬虫内容大纲❖爬虫的由来❖爬虫与大数据的联系❖Scrapy框架简介❖学习Scrapy需要准备的知识❖Scrapy的基本逻辑和运行原理❖认识第一个爬虫❖爬虫方向的前景和细分问题❖爬虫有哪些特点,如何区分?❖爬虫为什么会出现(开放性问题)?❖你讨厌爬虫吗?Quickglance爬虫的由来即网络爬虫,是一种自动获取页面内容的程序。它是搜索引擎重要的组成部分。网络爬虫❖网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。❖爬虫的分类:网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:❖通用网络爬虫(GeneralPurposeWebCrawler)❖聚焦网络爬虫(FocusedWebCrawler)❖增量式网络爬虫(IncrementalWebCrawler)❖深层网络爬虫(DeepWebCrawler)Storeofspiderandbigdata爬虫能做什么能做什么?不能做什么?CanCannotEverythingonHTMLbasedinternet!Badthings!❖通常意义来说,爬虫是为了在互联网中获取各种各样的信息,如果说浏览器能完成的页面访问,那么爬虫工程师都可以做出相应的爬虫。❖那么问题在于,爬虫开发的Cost和Benefit是否能平衡。❖对于敏感和隐私的数据,除非本人/组织同意,否者万万不要去尝试获取这些数据。问题❖为什么Scrapy是流行的爬虫开发框架?Scrapy=Scratchpython❖基于Python的快速、高层次的屏幕和Web抓去框架,用户专区Web站点(包括H5,移动端Wap站点)并从页面中提取结构化的数据。❖Scrapy除了可以用来做爬虫,获取数据和数据监测;另外还可以用作自动化测试框架!❖Scrapy开发源码,可以做任意的修改,同时提供能各种类型的爬虫基类,如BaseSpider,sitemap,CrawlSpider,使用Twisted异步网络库实现异步网络请求❖十分灵活:ScrapyEngine负责整体协调,可以任意增加南北接口,借鉴Django的Middleware概念❖容易控制:良好的Html协议支持,并发数可控,开放性好❖ScrapyEngine:处理整个系统的数据流处理、触发事物❖Scheduler:管理Request请求的出入栈;去除重复的请求❖Downloader:基于Twisted的异步下载器(不处理JS)❖Pipeline:数据持久化,也可以在此添加验证和去重的功能❖DownloadMiddleware:介于ScrapyEngine和下载器之间的middleware,处理两者这件的输入和输出请求❖SpiderMiddleware:介于ScrapyEngine和Spider。❖SchedulerMiddleware:介于ScrapyEngine和Scheduler。爬取简易流程❖1.Engine从Scheduler取出一个Url❖2.Engine讲Url包装成Request,并交由Downloader❖3.Downloader收到Response后,由具体的爬虫解析后生成结构化的Item数据❖4.把Item’扔’给Pipeline,Pipeline最终复杂实现数据的存储Scrapy的短板❖不能完整的模拟浏览器。❖目前不能执行JavaScript。因为scrapy框架的DownloadMiddleware没有集成任何浏览器内核。❖问题:Scrapy不能执行JavaScript,怎么办?学习Scrapy需要准备的知识❖Scrapy支持Python2.x和3.x❖理解关键字yield❖了解Html协议基本❖熟悉xml解析和正则表达式Soeasy?来认识这位“爬虫”❖新建工程:scrapystartporjectprojectname❖创建需要的Item、pipeline。❖在spiders目录下完成spidername.py❖运行scrapycrawlspider