- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大数据分析 第三章 Scrapy爬虫 本章学习目标 了解Scrapy定义 了解Scrapy框架的安装 掌握Scrapy框架的工作流程 掌握Scrapy框架的实现 3.1 Scrapy爬虫概述 Scrapy是一个使用Python语言编写的开源网络爬虫框架,是一个高级的Python爬虫框架。Scrapy可用于各种有用的应用程序,如数据挖掘,信息处理以及历史归档等,目前主要用于抓取web站点并从页面中提取结构化的数据。 3.2 Scrapy原理 Scrapy框架由Scrapy Engine、Scheduler、Downloader、Spiders、Item Pipeline、Downloader middlewares以及Spider middlewares等几部分组成 在整个框架组成中,Spiders是最核心的组件,Scrapy爬虫开发基本上围绕Spiders而展开的。 此外,在Scrapy框架中还有三种数据流对象,分别是Request、Response和Items。 Request是Scrapy中的HTTP请求对象。 Response是Scrapy中的HTTP响应对象。 Item是种简单的容器,用于保存爬取得到的数据。 Request对象 Request对象用于描述一个HTTP请求,由Spider产生,Request构造函数的参数列表如下: Request(url[, callback, method=GET, headers, body, cookies, meta, encoding=utf-8, priority=0, dont_filter=False, errback]) Response对象 Response对象用于描述一个HTTP响应,由Downloader产生,Response构造函数的参数列表如下: Response(url[, status=200, headers=None, body=b, flags=None, request=None]) Select对象 Scrapy的数组组织结构是Selector,它使用xpath选择器在Response中提取数据。 从页面中提取数据的核心技术是HTTP文本解析,在Python中常用的处理模块有: BeautifulSoup?:是一个非常流行的解析库,API简单,但解析的速度慢。 lxml?:是一个使用c语言编写的xml解析库,解析速度快,API相对比较复杂。 Scrapy中的Selector对象是基于lxml库建立的,并且简化了API接口,使用方便。 在具体实现中,Scrapy使用css和xpath选择器来定位元素,它的基本方法如下: xpath(): 返回选择器列表,每个选择器代表使用xpath语法选择的节点。 css(): 返回选择器列表,每个选择器代表使用css语法选择的节点。 response.xpath(/html/body/div) #选取body下的所有div response.xpath(//a)? #选中文档所有a response.xpath(/html/body//div) #选中body下的所有节点中的div,无论在什么位置 response.xpath(//a/text()) #选取所有a的文本 response.xpath(/html/div/*) #选取div的所有元素子节点 response.css(div a::text).extract()?#?所有div下所有a的文本 response.css(div a::attr(href)).extract()? ? ? ? ?# href的值 response.css(diva:nth-child(1))? #选中每个div的第一个a?节点,会设定只在子节点中找,不会到孙节点中 response.css(div:not(#container))? #选取所有id不是container的div response.css(div:first-childa:last-child)? #第一个div中最后一个a Spider开发流程 实现一个Spider需要以下几步: 继承scrapy.Spider。 为Spider命名。 设置爬虫的起始爬取点。 实现页面的解析。 3.3 Scrapy的开发与实现 要开发Scrapy爬虫,一般有以下几步: (1)新建项目 (2)确定抓取网页目标 (3)制作爬虫 (4)设计管道存储爬取内容 Scrapy常用命令介绍 1)startproject 2) genspi
文档评论(0)