书签 分享 收藏 举报 版权申诉 / 52
上传文档赚钱

类型Python基础与大数据应用-第八章-Python爬虫框架课件.pptx

  • 上传人(卖家):三亚风情
  • 文档编号:3371822
  • 上传时间:2022-08-24
  • 格式:PPTX
  • 页数:52
  • 大小:2.57MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《Python基础与大数据应用-第八章-Python爬虫框架课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    Python 基础 数据 应用 第八 爬虫 框架 课件
    资源描述:

    1、第八章 Python爬虫框架目 录 Contents01常见爬虫框架02Scrapy安装03Scrapy爬虫框架04Scrapy常用工具命令0506Scrapy爬虫实战项目训练07小结常见爬虫框架010102030405爬虫框架Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等。ScrapyCrawley能高速爬取对应网

    2、站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。CrawleyPortia是一个用Python编写无需任何编程知识,就能可视化爬取网站数据的开源工具。Portia 是运行在Web浏览器中,Portia 提供了可视化的Web 页面,只需通过简单单击,标注页面上需提取的相应数据,即可完成爬取规则的开发,这些规则还可在Scrapy中使用,用于抓取页面。PortiaPySpider是一个强大的网络爬虫系统,并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。PySpiderBeaut

    3、iful Soup是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航、查找、修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。在获取html元素时,都是用bs4完成的。Beautiful Soup常见爬虫框架06Grab框架,可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容。Grab07Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过

    4、程对用户是透明的。ColaScrapy安装02第一步 如Python和pip的版本比较低,需要将其升级。Python3.7安装方法按照第一章方法安装即可。pip3安装命令为【apt-get install Python3-pip】安装scrapy的依赖包【sudo apt-get install python3 python3-dev python-pip libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1q-dev】在/home目录下用mkdir命令建立scrapy文件夹利用pip3命令安装scrapy【pip install scrap

    5、y】scrapy安装第二步第三步查看版本第四步【cd /home】【mkdir scrapy】Scrapy爬虫框架03ScrapyScrapy爬虫框架爬虫框架Scrapy框架组件功 能Scrapy引擎(Scrapy Engine)负责处理整个系统的数据流,并在相应动作时触发事件(框架核心)调度器(Scheduler)接受引擎发过来的Request请求,并加入队列中,并在引擎再次发来Request请求的时候提供给引擎下载器(Downloader)负责获取网页内容并将网页内容返回给蜘蛛spider爬虫(Spiders)Scrapy用户编写用于分析Response并提取Item的类项目管道(Item

    6、 Pipeline)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应爬虫中间件(Spider Middlewares)介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛(Spiger)的响应输入(Response)和请求输出(Item和Request)调度中间件(Scheduler Middewares)介于Scrapy引擎和调度之间的中间件,处理从Scrapy引擎发送到调度的请求和响应Scrapy

    7、Scrapy数据流运行过程数据流运行过程step1引擎打开一个网站,找到处理该网站的Spider并向该Spider请求第一个要抓取的URL。step2引擎从Spider中获取第一个要爬取的URL并通过调度器(Scheduler)和Request进行调度。step3引擎从调度器请求下一个要爬取的URLstep4调度器返回下一个要爬取的URL给引擎,引擎将URL封装成一个请求(Request),通过下载中间件转发给下载器step5页面下载完毕后,下载器把资源封装成应答包(Response),并将其通过下载中间件发送给引擎step6引擎从下载器中接收到Response并通过Spider中间件发送给S

    8、pider处理step7Spider处理Response并返回爬取到的Item和新的Request发送给引擎step8引擎将爬取到的Item交给Item Pipeline,将Request给调度器Scrapy常用工具命令04创建创建一个一个ScrapyScrapy项目项目 在爬取之前,需先创建一个新的Scrapy项目。在Ubuntu16.04、Python3.7环境中,在/home/scapy/路径下建立一个文件夹,命令为【mkdir pyscr】,接下来进入该文件夹,在终端输入命令【scrapy startproject pyscr】,即可创建一个名为pyscr的项目,如图所示。创建创建一个

    9、一个ScrapyScrapy项目项目pyscr项目内容:scrapy.cfg:项目配置文件pyscr/:项目Python模块,代码将从这里导入pyscr/items.py:项目items文件pyscr/middlewares.py:定义spider中间件和downloader中间件pyscr/pipelines.py:项目管道文件pyscr/settings.py:项目设置文件pyscr/spiders:放置Spider的目录【tree】命令查看项目结构,pyscr项目中包含如图所示内容ScrapyScrapy全局命令全局命令在Scrapy框架中,提供了两种类型的命令:一种是针对项目的命令(即

    10、需要有项目,该命令才能成功运行);另一种为全局命令,这些命令不需要有项目就能运行(在有项目的情况下,这些命令也能运行)。全局命令一共有8个,具体如下:startprojectsettingsrunspidershellfetchviewversionbenchScrapyScrapy全局命令全局命令ustartproject命令语法:scrapy startproject 功能:在目录project_name下创建一个名为project_name的Scrapy项目。用法示例:【scrapy startproject myproject】usettings命令语法:scrapy settings

    11、 options功能:查看scrapy对应的配置信息,如果在项目目录内使用该命令,查看的是对应项目的配置信息,如果在项目外使用查看的是scrapy默认配置信息。用法示例:【scrapy settings-get BOT_NAME】获取得到蜘蛛项目的名称,如果没有获取结果则返回none输出结果:scrapybotScrapyScrapy全局命令全局命令urunspider命令语法:scrapy runspider 功能:在未创建项目的情况下,运行一个编写好的Python文件中的spider。用法示例:【scrapy runspider myspider.py】输出结果:.spider start

    12、s crawling.ushell命令语法:scrapy shell url功能:以给定的URL(如果给出)或者空(没有给出URL)启动Scrapy shell。用法示例:【scrapy shell http:/】运行结束后,在终端屏幕上会出现抓取的控制信息ScrapyScrapy全局命令全局命令ufetch命令语法:scrapy fetch 功能:使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。该命令以spider下载页面的方式获取页面。如果实际在项目中运行,fetch将会使用项目中spider的属性访问,如果该命令不在项目中运行,则会使用默认S

    13、crapy downloader设定。用法示例:【scrapy fetch-nolog http:/】【scrapy fetch-nolog-headers http:/】uview命令语法:scrapy view 功能:在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。有时候spider获取到的页面和普通用户看到的并不相同,此该命令可以用来检查spider所获取到的页面,并确认与用户看到的一致。应用示例:【scrapy view http:/】ScrapyScrapy全局命令全局命令uversion命令语法:scrapy version-v功能:输出Scrapy版本

    14、。配合-v运行时,该命令同时输出Python,Twisted以及平台的信息,方便bug提交。应用示例:【scrapy version v】ubench命令语法:scrapy bench功能:运行benchmark测试,测试Scrapy在硬件上的效率。ScrapyScrapy项目命令项目命令项目命令需要在有Scrapy项目的情况下,这些命令才能运行。项目命令主要有以下几个:crawlchecklisteditparsedeploygenspiderScrapyScrapy项目命令项目命令ucrawl命令语法:scrapy crawl 功能:运行Scrapy项目,使用spider进行爬取。应用示例

    15、:【scrapy crawl pyscr】ucheck命令语法:scrapy check-l 功能:运行contract检查。应用示例:【scrapy check l】ScrapyScrapy项目命令项目命令ulist命令语法:scrapy list功能:列出当前项目中所有可用的spider。每行输出一个spider。应用示例:【scrapy list】uedit命令语法:scrapy edit 功能:使用EDITOR中设定的编辑器编辑给定的spider。该命令仅仅是提供一个快捷方式。开发者可以自由选择其它工具或者IDE来编写调试spider。应用示例:【scrapy edit spider1

    16、】ScrapyScrapy项目命令项目命令uparse命令语法:【scrapy parse options】功能:获取给定的URL并使用相应的spider分析处理。如果提供-callback选项,则使用spider中的解析方法处理,否则使用parse。支持的选项:-spider=SPIDER:跳过自动检测spider并强制使用特定的spider-a NAME=VALUE:设置spider的参数(可能被重复)-callback or c:spider中用于解析返回(response)的回调函数-pipelines:在pipeline中处理item-rules or-r:使用CrawlSpider

    17、规则来发现用来解析返回(response)的回调函数-noitems:不显示爬取到的item-nolinks:不显示提取到的链接-nocolour:避免使用pygments对输出着色-depth or d:指定跟进链接请求的层次数(默认1)-verbose or v:显示每个请求的详细信息应用示例:【scrapy parse“http:/ parse_item】ScrapyScrapy项目命令项目命令udeploy命令语法:scrapy deploy|-l|-L功能:将项目部署到Scrapyd服务。ugenspider命令语法:scrapy genspider-t template 功能:在当

    18、前项目中创建一个新的的spiders。这仅是创建spider的一种快捷方式,该方法可以使用提前定义好的模板来生成spider,也可自己创建spider的源码文件,应用示例如图所示。Scrapy爬虫实战05ScrapyScrapy爬虫实战爬虫实战 在Ubuntu16.04,Python3.7环境下,创建一个Scrapy项目,爬取“糗事百科”中“穿越”网页中网友发表的糗事内容,并将内容保存在文本文件中。1.创建Scrapy项目qsbk在爬取之前,必须创建一个新的Scrapy项目。在/home/scrapy目录下建立qsbk目录,并在/home/scrapy/qsbk目录下用【scrapy star

    19、tproject qsbk】命令创建项目,如下图所示。ScrapyScrapy爬虫实战爬虫实战2.设置settings.py文件settings.py文件是项目的配置文件,常用的参数有:BOT_NAME=qsbk,Scrapy项目的名字,使用startproject 命令创建项目时被自动赋值;SPIDER_MODULES=qsbk.spiders,Scrapy搜索spider的模块列表,创建项目时被自动赋值;NEWSPIDER_MODULE=qsbk.spiders,使用 genspider 命令创建新spider的模块,创建项目时被自动赋值;ROBOTSTXT_OBEY=True,是否遵守r

    20、obots.txt协议,默认遵守robots.txt协议。robots.txt是遵循 Robot协议的一个文件,它保存在网站的服务器中,作用是告诉搜索引擎爬虫,本网站哪些目录下的网页不希望被爬取收录。在Scrapy启动后,会在第一时间访问网站的robots.txt文件,然后决定该网站的爬取范围。在某些情况下希望获取的是被robots.txt所禁止访问的,此时可将此配置项设置为False来获取数据;ScrapyScrapy爬虫实战爬虫实战CONCURRENT_REQUESTS=16,开启线程数量,默认16;AUTOTHROTTLE_START_DELAY=3,开始下载时限速并延迟时间;AUTOT

    21、HROTTLE_MAX_DELAY=60,高并发请求时最大延迟时间;DEFAULT_REQUEST_HEADERS=Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,Accept-Language:en,,这个参数是设置浏览器请求头,很多网站都会检查客户端的headers,可以在该参数里设置模拟浏览器;ITEM_PIPELINES=demo1.pipelines.Demo1Pipeline:300,,Pipeline的路径,300表示优先级,范围(0-1000),值越小级别越高;具体设置qsbk项目的s

    22、ettings.py文件:(1)设置ROBOTSTXT_OBEY参数:ROBOTSTXT_OBEY=False(2)设置AUTOTHROTTLE_START_DELAY参数:删除参数前的“#”,AUTOTHROTTLE_START_DELAY=3(3)设置ITEM_PIPELINES参数:删除该参数中所有“#”(4)设置DEFAULT_REQUEST_HEADERS参数:删除该参数中所有“#”,并添加“User-Agent:Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.116

    23、Safari/537.36,”,伪装成浏览器访问ScrapyScrapy爬虫实战爬虫实战3.设置items.py文件items.py负责数据模型的建立,是项目中的Item对象。Item对象是保存爬取到的数据的容器;其使用方法和Python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。Item使用简单的class定义语法和Field对象声明。在新建的qsbk项目中,使用items.py来定义存储的Item类,这个类需要继承scrapy.Item。其代码下图所示。ScrapyScrapy爬虫实战爬虫实战4.创建spider爬虫文件爬虫模块的代码都放置与spiders文件夹中。

    24、爬虫模块是用于从单个网站或多个网站爬取数据的类,其中应包含初始页面的URL、跟进网页链接、分析页面内容、提取数据方法。为了创建一个Spider爬虫,必须继承 scrapy.Spider 类,且定义以下三个属性:name:用于区别Spider。该名字必须是唯一的,不可为不同的Spider设定相同的名字start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL则从初始的URL获取到的数据中提取parse():是spider的一个方法。被调用时,每个初始URL完成下载后生成的 response 对象将会作为唯一的参数传递给该函数。该方法

    25、负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。ScrapyScrapy爬虫实战爬虫实战在spiders文件夹(cd/spiders)下创建qsbk.py文件(vim qsbk.py),qsbk.py中的代码如图所示。需要注意的是,这段代码中不仅需要下载网页数据,还需要对这些数据进行提取。Scrapy有自己的数据提取机制-选择器(selector基于lxml库),它通过Xpath或者CSS表达式来提取HTML文件中的内容。ScrapyScrapy爬虫实战爬虫实战(1)Xpath XPath是XML路径语言(XML P

    26、ath Language),它是一种用来确定XML文档中某部分位置的语言。Xpath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和在常规的电脑文件系统中看到的表达式非常相似。节点是通过沿着路径(path)或者步(steps)来选取的。在Xpath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点。示例XML文档如下:Harry Potter J K.Rowling 2005 29.99 上面XML文档中的节点:(文档节点)、J K.Rowling(元素节点)、lang=en(属

    27、性节点)。节点有:父、子、同胞、先辈、后代,5种关系。按照上方的xml文件book就是title的父节点,title就是book的子节点,author和title是同胞,bookstore是author和title的先辈,反之author是bookstore的后代。l 选取节点选取节点Xpath使用路径表达式在XML文档中选取节点。节点是通过沿着路径或者step来选取的。表8-1列出了最有用的路径表达式。对上面XML代码进行节点选取,其表达式如下表所示。ScrapyScrapy爬虫实战爬虫实战表达式描 述nodename选取此节点的所有子节点/从根节点选取/从匹配选择的当前节点选择文档中的节点

    28、,而不考虑它们的位置。.选取当前节点.选取当前节点的父节点选取属性路径表达式结 果bookstore选取bookstore元素的所有子节点/bookstore选取根元素bookstore。假如路径起始于正斜杠(/),则此路径始终代表到某元素的绝对路径!bookstore/book选取属于bookstore的子元素的所有book元素/book选取所有book子元素,而不管它们在文档中的位置bookstore/book选择属于bookstore元素的后代的所有book元素,而不管它们位于 bookstore之下的什么位置/lang选取名为lang的所有属性l选取未知节点XPath通配符可用来选取未

    29、知的XML元素。常用的通配符如下表所示。对上述XML代码,下表列出了一些路径表达式,以及这些表达式的结果。ScrapyScrapy爬虫实战爬虫实战通配符描 述*匹配任何元素节点*匹配任何属性节点node()匹配任何类型的节点路径表达式结 果/bookstore/*选取 bookstore 元素的所有子元素/*选取文档中的所有元素/title*选取所有带有属性的 title 元素ScrapyScrapy爬虫实战爬虫实战 下面,以糗事百科网站为例,初始网站为http:/ 从下图可以看出,网友发表“糗事”所有信息都放置在中,根据Xpath的编写规则,其xpath路径表达式可以写为“/divclass

    30、=col1/div”。而需要爬取的“糗事”文字内容都存放在*中(*为具体的“糗事”,如图8-14所示),因此其xpath可以写为“./divclass=content/span/text()”。ScrapyScrapy爬虫实战爬虫实战(2)选择器(Selector)有了Xpath路径表达式还不能直接进行网页数据提取,还需要一个提取机制。而在Scrapy框架中有一套自己的数据提取机制,称为选择器(selector),它通过特定的Xpath或CSS表达式来选择HTML文件中的某个部分。Scrapy选择器构建于lxml库之上,因此它们在速度和解析准确性上非常相似。Selector选择器有四个基本的方

    31、法:xpath(表达式):传入Xpath表达式,返回该表达式对应的节点列表。css(表达式):传入CSS表达式,返回该表达式对应的节点列表。extract():返回被选择元素的unicode字符串的列表。Extract()表示所有的元素,extract_first()表示第一个元素。re(表达式):返回通过正则表达式提取的unicode字符串列表。选择器在使用方式上很方便,可以使用传入的response直接调用,如response.xpath(表达式)、response.css(表达式)。调用方法很简单,而构建xpath和css比较复杂。Scrapy框架中提供了一种简便的方式来查看Xpath表

    32、达式是否正确有用。ScrapyScrapy爬虫实战爬虫实战 在终端窗口输入命令【scrapy shell URL】,成功运行就会有返回结果。如【scrapy shell http:/】,其返回结果如图所示。从图中看到response就是访问以上网址获得的响应,接下来输入【response.xpath(“./divclass=content/span/text()”).extract()】,验证Xpath表达式的正确性,如果正确就能抽取当前网页中所有糗事的内容,如不正确,则返回值为空。ScrapyScrapy爬虫实战爬虫实战 5.设置pipelines文件 pipelines文件负责对spide

    33、r返回数据进行处理,可以将数据写入数据库,也可以写入到文件等。该项目中将数据写入到文本文件。代码如图所示。ScrapyScrapy爬虫实战爬虫实战 6.运行Scrapy项目 在qsbk目录下,用crawl命令运行Scrapy项目。【scrapy crawl qsbk】运行结束后,在该目录下生成文本文件qsbk.txt,使用命令【cat qsbk.txt】查看其内容。项目运行及结果见下面2个图所示。项目运行的结果由于网页在变动,因此结果不尽相同。项目训练:用Scrapy爬取豆瓣图书保存到MySQL数据库文件06用Scrapy爬取豆瓣图书保存到MySQL数据库文件 (1)用Scrapy框架抓取把豆

    34、瓣网(https:/ (1)任务分析Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言结构化查询语言(SQL)进行数据库管理。本项目使Scrapy框架首先抓取豆瓣网上的图书信息,通过创建项目、设置items.py文件和pipelines.py文件、创建spider.py文件等操作进行抓取。然后将抓取的信息通过创建数据库、创建存放图书信息的数据表等操作存储到MySQL数据库中。本项目的关键是Xpath表达式

    35、的构建。项目需要抓取的URL为https:/ (2)项目实施新建Scrapy项目douban在Ubuntu的终端依次完成以下操作:【cd/home】切换到home目录;【ls】查看该目录下的所有内容;【mkdir scrapy】在home目录下创建scrapy文件夹;【cd scrapy】进入scrapy文件夹;【scrapy startproject douban】创建Scrapy项目douban;【ls】查看创建成功的scrapy项目douban。设置settings.py文件在Ubuntu的终端依次完成以下操作:【cd/home/scrapy/douban/douban】进入douban

    36、目录;【ls】查看该目录下的所有内容,找到settings.py文件;【vim settings.py】打开setting.py文件并编辑,修改如下数据:ROBOTSTXT=False、删除ITEM_PIPELINES参数前“#”、USER_AGENT参数前“#”去掉,并将参数值改为“USER_AGENT=Mozilla/5.0(X11;Linux x86_64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/48.0.2564.116 Safari/537.36”,保存退出。用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤项目训练项目训练 设

    37、置items.py文件【vim items.py】打开并编辑文件,添加如下数据(将pass改成以下5行):book_name=scrapy.Field()author=scrapy.Field()grade=scrapy.Field()count=scrapy.Field()introduction=scrapy.Field()保存退出用Scrapy爬取豆瓣图书保存到MySQL数据库文件用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤爬虫编写【cd/home/scrapy/douban/douan/spiders】切换至spiders目录下;【vim doubanspider.py

    38、】创建与编辑爬虫文件,导入要爬取的数据项,构建爬虫所需的name、URL及爬取的内容,添加代码如下:import scrapyfrom douban.items import DoubanItem class DoubanspiderSpider(scrapy.Spider):name=doubanspider allowed_domains= def start_requests(self):url=https:/ yield scrapy.Request(url,callback=self.parse,dont_filter=True)def parse(self,response):it

    39、em=DoubanItem()info_list=response.xpath(/divclass=info)for info in info_list:itembook_name=info.xpath(./h2/a/text().extract_first().strip()itemauthor=info.xpath(./divclass=pub/text().extract_first().strip().split(/)0 itemgrade=info.xpath(./div2/span2/text().extract_first()itemcount=info.xpath(./div2

    40、/span3/text().extract_first()itemintroduction=info.xpath(./p/text().extract_first()yield item next_temp_url=response.xpath(/divid=subject_list/divclass=paginator/spanclass=next/a/href).extract_first()if next_temp_url:next_url=response.urljoin(next_temp_url)yield scrapy.Request(next_url)用Scrapy爬取豆瓣图书

    41、保存到MySQL数据库文件训练步骤项目训练项目训练 代码如图所示用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤项目训练项目训练 运行爬虫并将其保存至csv文件【cd/home/scrapy/douban】返回douban目录下;【ls】查看其中文件,确保有douban文件夹和scrapy.cfg文件后;【scrapy crawl doubanspider o doubanread.csv】运行爬虫;【ls】查看其中文件,发现生成doubanread.csv文件【cat doubanread.csv】查看文件内容结果。创建MySQL数据库douban和数据表doubanread【m

    42、ysql-u root-p】终端输入命令后,在Enter password:后输入密码*,进入MySQL数据库;创建名为douban的数据库:mysql create database douban;显示所有的数据库:mysql show databases;选择douban数据库:mysql use douban;在MySQL数据库里创建表doubanread,命令如下:mysql CREATE TABLE doubanread(id int(11)PRIMARY KEY NOT NULL AUTO_INCREMENT,book_name varchar(255)DEFAULT NULL,a

    43、uthor varchar(255)DEFAULT NULL,grade varchar(255)DEFAULT NULL,count varchar(255)DEFAULT NULL,introduction varchar(255)DEFAULT NULL)ENGINE=InnoDB AUTO_INCREMENT=1409 DEFAULT CHARSET=utf8;mysql exit;退出数据库。用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤项目训练项目训练 设置pipelines.py文件【cd/home/scrapy/douban/douban】【vim pipelin

    44、es.py】编辑pipelines.py文件,导入MySQLdb数据库,配置数据库相关的信息,代码如下:import MySQLdbclass DoubanPipeline(object):def _init_(self):#参数依次是:服务器主机名、用户名、密码、数据库、编码类型self.db=MySQLdb.connect(localhost,root,douban,charset=utf8)self.cursor=self.db.cursor()def process_item(self,item,spider):book_name=item.get(book_name,N/A)auth

    45、or=item.get(author,N/A)grade=item.get(grade,N/A)count=item.get(count,N/A)introduction=item.get(introduction,N/A)sql=insert into doubanread(book_name,author,class_,grade,count,introduction)values(%s,%s,%s,%s,%s,%s)self.cursor.execute(sql,(book_name,author,class_,grade,count,introduction)mit()def cols

    46、e_spider(self,spider):self.cursor.close()self.db.close()用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤 再次运行爬虫【scrapy crawl doubanspider】查看MySQL数据库中保存的数据【mysql u root-p】输入密码,进入MySQL数据库;mysql use douban;使用豆瓣数据库mysql select count(*)from doubanread计数统计mysql select*from doubanread;查询全部记录查询结果如图所示。用Scrapy爬取豆瓣图书保存到MySQL数据库

    47、文件训练步骤项目训练项目训练 项目小结:使用Scrapy框架的爬取网络信息的流程如下1.在spider(爬取数据文件)中传入了初始url,并通过引擎传递给scheduler调度队列生成request请求,并通过downloader middleware 进入downloader从互联网上下载数据,返回一个response对象。response是一个scrapy.http.response.html.HtmlResponse对象,可以通过css和xpath语法来提取数据2.提取出的数据是一个Selector 或 SelectorList对象,并通过downloader middle 经引擎传递给

    48、spider(爬取数据文件)中的parse函数进行解析,通过extract()或getall()获取了字符串列表类型。get()方法返回第一个值为str类型,xtract_first()返回列表中的第一个值为str类型3.解析后使用yield将函数转换为一个生成器,不断的从中抽数据,并传递给pipeline进行处理4.在Item pipeline中使用三个核心方法和初始化函数,首先在_init_()或open_spider()打开数据,接着使用核心方法process_item进行数据处理,最后使用了close_spider()方法关闭了打开的数据,如需把数据保存至MySQL数据库时创建数据库和

    49、数据表,在Python3.7连接MySQL数据库,需要用到pymysql或者是MySQLdb模块。5.最后运行爬虫项目,得到目标结果Scrapy框架爬取数据时,要注意反爬虫headers的设置。用Scrapy爬取豆瓣图书保存到MySQL数据库文件小 结07小小 结结 1.Scrapy框架中由Scrapy引擎(Scrapy Engine)、调度器(Scheduler)、下载器(Downloader)、爬虫(Spiders)、项目管道(Item Pipeline)、下载器中间件(Downloader Middlewares)、爬虫中间件(Spider Middlewares)、调度中间件(Sche

    50、duler Middewares)组件组成。2.Scrapy项目创建后,该项目中包含项目配置文件scrapy.cfg、项目items文件items.py、定义spider 中间件和downloader中间件的middlewares.py、项目管道文件pipelines.py、项目设置文件settings.py、放置Spider的目录spiders等文件、文件夹。3.创建Scrapy项目的命令为scrapy startproject 项目名称;运行项目命令为scrapy crawl 项目名称。4.命令scrapy shell URL与选择器(selector)配合使用,可以测试抽取数据的xpat

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:Python基础与大数据应用-第八章-Python爬虫框架课件.pptx
    链接地址:https://www.163wenku.com/p-3371822.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库