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

上传人(卖家):三亚风情 文档编号:3371822 上传时间:2022-08-24 格式:PPTX 页数:52 大小:2.57MB
下载 相关 举报
Python基础与大数据应用-第八章-Python爬虫框架课件.pptx_第1页
第1页 / 共52页
Python基础与大数据应用-第八章-Python爬虫框架课件.pptx_第2页
第2页 / 共52页
Python基础与大数据应用-第八章-Python爬虫框架课件.pptx_第3页
第3页 / 共52页
Python基础与大数据应用-第八章-Python爬虫框架课件.pptx_第4页
第4页 / 共52页
Python基础与大数据应用-第八章-Python爬虫框架课件.pptx_第5页
第5页 / 共52页
点击查看更多>>
资源描述

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Python基础与大数据应用-第八章-Python爬虫框架课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

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


163文库-Www.163Wenku.Com |网站地图|