




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 scra
5、py】scrapy安装第二步第三步查看版本第四步【cd /home】【mkdir scrapy】Scrapy爬虫框架03Scrapy爬虫框架Scrapy框架组件功 能Scrapy引擎(Scrapy Engine)负责处理整个系统的数据流,并在相应动作时触发事件(框架核心)调度器(Scheduler)接受引擎发过来的Request请求,并加入队列中,并在引擎再次发来Request请求的时候提供给引擎下载器(Downloader)负责获取网页内容并将网页内容返回给蜘蛛spider爬虫(Spiders)Scrapy用户编写用于分析Response并提取Item的类项目管道(Item Pipeline
6、)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应下载器中间件(Downloader Middlewares)位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应爬虫中间件(Spider Middlewares)介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛(Spiger)的响应输入(Response)和请求输出(Item和Request)调度中间件(Scheduler Middewares)介于Scrapy引擎和调度之间的中间件,处理从Scrapy引擎发送到调度的请求和响应Scrapy数据流运行过程st
7、ep1引擎打开一个网站,找到处理该网站的Spider并向该Spider请求第一个要抓取的URL。step2引擎从Spider中获取第一个要爬取的URL并通过调度器(Scheduler)和Request进行调度。step3引擎从调度器请求下一个要爬取的URLstep4调度器返回下一个要爬取的URL给引擎,引擎将URL封装成一个请求(Request),通过下载中间件转发给下载器step5页面下载完毕后,下载器把资源封装成应答包(Response),并将其通过下载中间件发送给引擎step6引擎从下载器中接收到Response并通过Spider中间件发送给Spider处理step7Spider处理Re
8、sponse并返回爬取到的Item和新的Request发送给引擎step8引擎将爬取到的Item交给Item Pipeline,将Request给调度器Scrapy常用工具命令04创建一个Scrapy项目 在爬取之前,需先创建一个新的Scrapy项目。在Ubuntu16.04、Python3.7环境中,在/home/scapy/路径下建立一个文件夹,命令为【mkdir pyscr】,接下来进入该文件夹,在终端输入命令【scrapy startproject pyscr】,即可创建一个名为pyscr的项目,如图所示。创建一个Scrapy项目pyscr项目内容:scrapy.cfg: 项目配置文件
9、pyscr/: 项目Python模块, 代码将从这里导入pyscr/items.py: 项目items文件pyscr/middlewares.py:定义spider中间件和downloader中间件pyscr/pipelines.py: 项目管道文件pyscr/settings.py: 项目设置文件pyscr/spiders: 放置Spider的目录【tree】命令查看项目结构,pyscr项目中包含如图所示内容Scrapy全局命令在Scrapy框架中,提供了两种类型的命令:一种是针对项目的命令(即需要有项目,该命令才能成功运行);另一种为全局命令,这些命令不需要有项目就能运行(在有项目的情况下
10、,这些命令也能运行)。全局命令一共有8个,具体如下: startprojectsettingsrunspidershellfetchviewversionbenchScrapy全局命令startproject命令语法:scrapy startproject 功能:在目录project_name下创建一个名为project_name的Scrapy项目 。用法示例:【scrapy startproject myproject】settings命令语法:scrapysettingsoptions功能:查看scrapy对应的配置信息,如果在项目目录内使用该命令,查看的是对应项目的配置信息,如果在项目外
11、使用查看的是scrapy默认配置信息。用法示例:【scrapy settings -get BOT_NAME】获取得到蜘蛛项目的名称,如果没有获取结果则返回none输出结果:scrapybotScrapy全局命令runspider命令语法:scrapyrunspider功能:在未创建项目的情况下,运行一个编写好的Python文件中的spider。用法示例:【scrapy runspider myspider.py】输出结果: . spider starts crawling . shell命令语法:scrapyshellurl功能:以给定的URL(如果给出)或者空(没有给出URL)启动Scra
12、py shell。用法示例:【scrapy shell 】运行结束后,在终端屏幕上会出现抓取的控制信息Scrapy全局命令fetch命令语法:scrapyfetch功能:使用Scrapy下载器(downloader)下载给定的URL,并将获取到的内容送到标准输出。该命令以spider下载页面的方式获取页面。如果实际在项目中运行,fetch将会使用项目中spider的属性访问,如果该命令不在项目中运行,则会使用默认Scrapy downloader设定。用法示例:【scrapy fetch -nolog 】【scrapy fetch -nolog -headers 】view命令语法:scrap
13、yview功能:在浏览器中打开给定的URL,并以Scrapy spider获取到的形式展现。有时候spider获取到的页面和普通用户看到的并不相同,此该命令可以用来检查spider所获取到的页面,并确认与用户看到的一致。应用示例:【scrapy view 】Scrapy全局命令version命令语法:scrapyversion-v功能:输出Scrapy版本。配合-v运行时,该命令同时输出Python, Twisted以及平台的信息,方便bug提交。应用示例:【scrapy version v】bench命令语法:scrapybench功能:运行benchmark测试,测试Scrapy在硬件上的
14、效率。Scrapy项目命令项目命令需要在有Scrapy项目的情况下,这些命令才能运行。项目命令主要有以下几个:crawlchecklisteditparsedeploygenspiderScrapy项目命令crawl命令语法:scrapycrawl功能:运行Scrapy项目,使用spider进行爬取。应用示例:【scrapy crawl pyscr】check命令语法:scrapycheck-l功能:运行contract检查。应用示例:【scrapy check l】Scrapy项目命令list命令语法:scrapylist功能:列出当前项目中所有可用的spider。每行输出一个spider。
15、应用示例:【scrapy list】edit命令语法:scrapyedit功能:使用EDITOR中设定的编辑器编辑给定的spider。该命令仅仅是提供一个快捷方式。开发者可以自由选择其它工具或者IDE来编写调试spider。应用示例:【scrapy edit spider1】Scrapy项目命令parse命令语法:【scrapyparseoptions】功能:获取给定的URL并使用相应的spider分析处理。如果提供-callback选项,则使用spider中的解析方法处理,否则使用parse。支持的选项:-spider=SPIDER: 跳过自动检测spider并强制使用特定的spider-a
16、NAME=VALUE: 设置spider的参数(可能被重复)-callbackorc:spider中用于解析返回(response)的回调函数-pipelines:在pipeline中处理item-rules or-r:使用CrawlSpider规则来发现用来解析返回(response)的回调函数-noitems:不显示爬取到的item-nolinks:不显示提取到的链接-nocolour:避免使用pygments对输出着色-depthord:指定跟进链接请求的层次数(默认1)-verboseorv: 显示每个请求的详细信息应用示例:【scrapy parse “/” -c parse_ite
17、m】Scrapy项目命令deploy命令语法:scrapydeploy |-l|-L功能:将项目部署到Scrapyd服务。genspider命令语法:scrapy genspider -t template 功能:在当前项目中创建一个新的的spiders。这仅是创建spider的一种快捷方式,该方法可以使用提前定义好的模板来生成spider,也可自己创建spider的源码文件,应用示例如图所示。Scrapy爬虫实战05Scrapy爬虫实战 在Ubuntu16.04,Python3.7环境下,创建一个Scrapy项目,爬取“糗事百科”中“穿越”网页中网友发表的糗事内容,并将内容保存在文本文件中。
18、1. 创建Scrapy项目qsbk在爬取之前,必须创建一个新的Scrapy项目。在/home/scrapy目录下建立qsbk目录,并在/home/scrapy/qsbk目录下用【scrapy startproject qsbk】命令创建项目,如下图所示。Scrapy爬虫实战2. 设置settings.py文件settings.py文件是项目的配置文件,常用的参数有:BOT_NAME = qsbk ,Scrapy项目的名字,使用startproject 命令创建项目时被自动赋值;SPIDER_MODULES = qsbk.spiders ,Scrapy搜索spider的模块列表,创建项目时被自动
19、赋值;NEWSPIDER_MODULE = qsbk.spiders ,使用 genspider 命令创建新spider的模块,创建项目时被自动赋值;ROBOTSTXT_OBEY = True,是否遵守robots.txt协议,默认遵守robots.txt协议。robots.txt是遵循 Robot协议的一个文件,它保存在网站的服务器中,作用是告诉搜索引擎爬虫,本网站哪些目录下的网页不希望被爬取收录。在Scrapy启动后,会在第一时间访问网站的robots.txt文件,然后决定该网站的爬取范围。在某些情况下希望获取的是被robots.txt所禁止访问的,此时可将此配置项设置为False来获取数
20、据;Scrapy爬虫实战CONCURRENT_REQUESTS = 16,开启线程数量,默认16;AUTOTHROTTLE_START_DELAY = 3,开始下载时限速并延迟时间;AUTOTHROTTLE_MAX_DELAY = 60,高并发请求时最大延迟时间;DEFAULT_REQUEST_HEADERS = Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8, Accept-Language: en, ,这个参数是设置浏览器请求头,很多网站都会检查客户端的headers,可以在该参数里设置模拟浏览
21、器;ITEM_PIPELINES = demo1.pipelines.Demo1Pipeline: 300,,Pipeline的路径,300表示优先级,范围(0-1000),值越小级别越高;具体设置qsbk项目的settings.py文件:(1)设置ROBOTSTXT_OBEY参数:ROBOTSTXT_OBEY = False(2)设置AUTOTHROTTLE_START_DELAY参数:删除参数前的“#”,AUTOTHROTTLE_START_DELAY = 3(3)设置ITEM_PIPELINES参数:删除该参数中所有“#”(4)设置DEFAULT_REQUEST_HEADERS参数:删除
22、该参数中所有“#”,并添加“User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36,”,伪装成浏览器访问Scrapy爬虫实战3. 设置items.py文件items.py负责数据模型的建立,是项目中的Item对象。Item对象是保存爬取到的数据的容器;其使用方法和Python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。Item使用简单的class定义语法和Field对象声明。在新建的qsbk项
23、目中,使用items.py来定义存储的Item类,这个类需要继承scrapy.Item。其代码下图所示。Scrapy爬虫实战4.创建spider爬虫文件爬虫模块的代码都放置与spiders文件夹中。爬虫模块是用于从单个网站或多个网站爬取数据的类,其中应包含初始页面的URL、跟进网页链接、分析页面内容、提取数据方法。为了创建一个Spider爬虫,必须继承 scrapy.Spider 类,且定义以下三个属性:name: 用于区别Spider。该名字必须是唯一的,不可为不同的Spider设定相同的名字start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面
24、将是其中之一。后续的URL则从初始的URL获取到的数据中提取parse(): 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 response 对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。 Scrapy爬虫实战在spiders文件夹(cd /spiders)下创建qsbk.py文件(vim qsbk.py),qsbk.py中的代码如图所示。需要注意的是,这段代码中不仅需要下载网页数据,还需要对这些数据进行提取。Scrapy有自己的数据提取机制-选择器
25、(selector基于lxml库),它通过Xpath或者CSS表达式来提取HTML文件中的内容。Scrapy爬虫实战(1)Xpath XPath是XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。Xpath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和在常规的电脑文件系统中看到的表达式非常相似。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。在Xpath中,有七种类型的节点:元素、属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML文档是被作为节点树来对待的,树的根被称为文档节点或者根节点。示例
26、XML文档如下: Harry Potter J K. Rowling 2005 29.99 上面XML文档中的节点: (文档节点)、J K. Rowling (元素节点)、lang=en (属性节点)。节点有:父、子、同胞、先辈、后代,5种关系。按照上方的xml文件book就是title的父节点,title就是book的子节点,author和title是同胞,bookstore是author和title的先辈,反之author是bookstore的后代。选取节点Xpath使用路径表达式在XML文档中选取节点。节点是通过沿着路径或者step来选取的。表8- 1列出了最有用的路径表达式。对上面XM
27、L代码进行节点选取,其表达式如下表所示。Scrapy爬虫实战表达式描 述nodename选取此节点的所有子节点/从根节点选取/从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。.选取当前节点.选取当前节点的父节点选取属性路径表达式结 果bookstore选取bookstore元素的所有子节点/bookstore选取根元素bookstore。假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!bookstore/book选取属于bookstore的子元素的所有book元素/book选取所有book子元素,而不管它们在文档中的位置bookstore/book选择属于book
28、store元素的后代的所有book元素,而不管它们位于 bookstore之下的什么位置/lang选取名为lang的所有属性选取未知节点XPath通配符可用来选取未知的XML元素。常用的通配符如下表所示。对上述XML代码,下表列出了一些路径表达式,以及这些表达式的结果。Scrapy爬虫实战通配符描 述*匹配任何元素节点*匹配任何属性节点node()匹配任何类型的节点路径表达式结 果/bookstore/*选取 bookstore 元素的所有子元素/*选取文档中的所有元素/title*选取所有带有属性的 title 元素Scrapy爬虫实战 下面,以糗事百科网站为例,初始网站为/history/
29、,需要抓取网页中的“糗事”。首先分析这张网页中的元素。用浏览器打来该网页,右击打开快捷菜单,选择“检查”(谷歌浏览器)或“查看元素”(火狐浏览器)或“检查元素”(IE浏览器)命令,查看页面元素,如图所示。Scrapy爬虫实战 从下图可以看出,网友发表“糗事”所有信息都放置在中,根据Xpath的编写规则,其xpath路径表达式可以写为“/divclass=col1/div”。而需要爬取的“糗事”文字内容都存放在*中(*为具体的“糗事”,如图8- 14所示),因此其xpath可以写为“./divclass=content/span/text()”。Scrapy爬虫实战(2)选择器(Selector
30、)有了Xpath路径表达式还不能直接进行网页数据提取,还需要一个提取机制。而在Scrapy框架中有一套自己的数据提取机制,称为选择器(selector),它通过特定的Xpath或CSS表达式来选择HTML文件中的某个部分。Scrapy选择器构建于lxml库之上,因此它们在速度和解析准确性上非常相似。Selector选择器有四个基本的方法:xpath(表达式):传入Xpath表达式,返回该表达式对应的节点列表。css(表达式):传入CSS表达式,返回该表达式对应的节点列表。extract(): 返回被选择元素的unicode字符串的列表。Extract()表示所有的元素,extract_firs
31、t()表示第一个元素。re(表达式):返回通过正则表达式提取的unicode字符串列表。选择器在使用方式上很方便,可以使用传入的response直接调用,如response.xpath(表达式)、response.css(表达式)。调用方法很简单,而构建xpath和css比较复杂。Scrapy框架中提供了一种简便的方式来查看Xpath表达式是否正确有用。Scrapy爬虫实战 在终端窗口输入命令【scrapy shell URL】,成功运行就会有返回结果。如【scrapy shell 】,其返回结果如图所示。 从图中看到response就是访问以上网址获得的响应,接下来输入【response.x
32、path(“./divclass=content/span/text()”).extract()】,验证Xpath表达式的正确性,如果正确就能抽取当前网页中所有糗事的内容,如不正确,则返回值为空。Scrapy爬虫实战 5.设置pipelines文件 pipelines文件负责对spider返回数据进行处理,可以将数据写入数据库,也可以写入到文件等。该项目中将数据写入到文本文件。代码如图所示。Scrapy爬虫实战 6.运行Scrapy项目 在qsbk目录下,用crawl命令运行Scrapy项目。【scrapy crawl qsbk】运行结束后,在该目录下生成文本文件qsbk.txt,使用命令【c
33、at qsbk.txt】查看其内容。项目运行及结果见下面2个图所示。项目运行的结果由于网页在变动,因此结果不尽相同。项目训练:用Scrapy爬取豆瓣图书保存到MySQL数据库文件06用Scrapy爬取豆瓣图书保存到MySQL数据库文件 (1)用Scrapy框架抓取把豆瓣网( /tag/中国文学)中的图书信息(包括书名、作者、类别、评价、评价人数、图书类别);(2)将抓取的数据保存到MySQL数据库中。 训练目标通过对Scarpy爬取项目的设计与实现,掌握Scrapy框架的用法和MySQL的基本操作,会用Scrapy框架爬取网页数据并保存至数据库。训练内容 (1)任务分析Scrapy是一个为了爬
34、取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言结构化查询语言(SQL)进行数据库管理。本项目使Scrapy框架首先抓取豆瓣网上的图书信息,通过创建项目、设置items.py文件和pipelines.py文件、创建spider.py文件等操作进行抓取。然后将抓取的信息通过创建数据库、创建存放图书信息的数据表等操作存储到MySQL数据库中。本项目的关键是Xpath表达式的构建。项目需要抓取的URL为/tag/中国文学,抓取网页中
35、图书的书名、作者、评价、评价人数、图书信息。通过浏览器的元素分析,可以知道这些信息的xpath路径为:每本图书的信息都保存在class=“info”的div里面,其对应的xpath路径为/divclass=“info” ;书名h2的下一个a标签里面,其对应的xpath路径为./h2/a/text();作者在class=“pub”的div标签里面,其对应的xpath路径为 ./divclass=pub/text() ;评分在第二个div标签下的第二个span标签里面,其对应的xpath路径为./div2/span2/text();评价人数在第二个div标签下的第三个span标签里面,其对应的xp
36、ath路径为./div2/span3/text() ;后页的链接在class=“paginator”div标签下的属性为class=next的span标签下面的一个a标签里面的href属性里面,其对应的xpath路径为divclass=paginator/spanclass=next/a/href。训练步骤用Scrapy爬取豆瓣图书保存到MySQL数据库文件 (2)项目实施新建Scrapy项目douban在Ubuntu的终端依次完成以下操作:【cd /home】切换到home目录;【ls】查看该目录下的所有内容;【mkdir scrapy】在home目录下创建scrapy文件夹;【cd scr
37、apy】进入scrapy文件夹;【scrapy startproject douban】创建Scrapy项目douban;【ls】查看创建成功的scrapy项目douban。设置settings.py文件在Ubuntu的终端依次完成以下操作:【cd /home/scrapy/douban/douban】进入douban目录;【ls】查看该目录下的所有内容,找到settings.py文件;【vim settings.py】打开setting.py文件并编辑,修改如下数据:ROBOTSTXT = False、删除ITEM_PIPELINES参数前“#”、USER_AGENT参数前“#”去掉,并将参
38、数值改为“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数据库文件训练步骤项目训练 设置items.py文件【vim items.py】打开并编辑文件,添加如下数据(将pass改成以下5行): book_name = scrapy.Field() author = scrapy.Field()grade = scrapy.Field() count =
39、 scrapy.Field() introduction = scrapy.Field()保存退出用Scrapy爬取豆瓣图书保存到MySQL数据库文件用Scrapy爬取豆瓣图书保存到MySQL数据库文件训练步骤爬虫编写【cd /home/scrapy/douban/douan/spiders】切换至spiders目录下;【vim doubanspider.py】创建与编辑爬虫文件,导入要爬取的数据项,构建爬虫所需的name、URL及爬取的内容,添加代码如下:import scrapyfrom douban.items import DoubanItemclass DoubanspiderSpi
40、der(scrapy.Spider): name = doubanspider allowed_domains = def start_requests(self): url = /tag/%E4%B8%AD%E5%9B%BD%E6%96%87%E5%AD%A6 yield scrapy.Request(url,callback=self.parse ,dont_filter=True) def parse(self,response): item = DoubanItem() info_list = response.xpath(/divclass=info) for info in inf
41、o_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/span3/text().extract_first() itemintroduction= info.xpath(./p
42、/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爬取豆瓣图书保存到MySQL数据库文件训练步骤项目训练 代码如图所示用Scrapy爬取豆瓣图书保存到MySQL数据
43、库文件训练步骤项目训练 运行爬虫并将其保存至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【mysql -u root -p】终端输入命令后,在Enter password: 后输入密码*,进入MySQL数据
44、库; 创建名为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,author varchar(255) DEFAULT NULL,grade varchar(255
45、) 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 pipelines.py】编辑pipelines.py文件,导入MySQLdb数据库,配置数据库相关的信
46、息,代码如下: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) author = item.get(author,N/A) gr
47、ade = 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 colse_spider(self,spider):
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大五人格与教育政策执行力的关系研究
- 智慧城市防灾减灾教育领域的创新与实践
- 智慧城市安全防护新篇章视频监控与大数据的融合应用
- 教育机器人在职业培训中的应用和价值分析
- 教育数据分析提升课程设计的有效途径
- 技术在商业竞争中的关键作用
- 医疗创新重塑健康管理与医疗服务
- 抖音商户直播价格策略审批登记制度
- 公交优先策略对2025年城市交通拥堵治理的影响分析报告
- 公众参与视角下环境影响评价信息公开策略研究报告
- T/CCOA 50-2023低菌小麦粉生产技术规程
- 安全生产责任制度完整版
- 2025届辽宁省大连市高新园区七年级数学第二学期期末考试试题含解析
- 2025+NCCN非小细胞肺癌诊疗指南解读
- ECMO治疗暴发性心肌炎
- 2025CSCO乳腺癌诊疗指南解读课件
- 社会单位消防安全评估导则
- 卫生系列高级职称申报工作量统计表(医疗类)
- 宠物店聘用合同协议
- 食堂外人出入管理制度
- 大数据驱动设备优化设计-全面剖析
评论
0/150
提交评论