您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > scrapy官方手册,中文版
索引模块|下一页|Scrapy0.24.1文档»Scrapy0.25文档文档本文档涵盖了所有Scrapy的内容。获得帮助获得帮助遇到问题了?我们来帮您!查看下FAQ,这里有些常见的问题的解决办法。寻找详细的信息?试试索引或者模块索引。您可以在scrapy-users的邮件列表[]中寻找内容,或者提问问题[]在#scrapyIRCchannel提问在issuetracker[]中提交Scrapy的bug第一步第一步初窥Scrapy了解Scrapy如何祝你一臂之力。安装指南安装Scrapy。Scrapy入门教程编写您的第一个Scrapy项目。例子通过把玩已存在的Scrapy项目来学习更多内容。基本概念基本概念命令行工具(Commandlinetools)学习用于管理Scrapy项目的命令行工具Items定义爬取的数据Spiders编写爬取网站的规则选择器(Selectors)使用XPath提取网页的数据Scrapy终端(Scrapyshell)在交互环境中测试提取数据的代码ItemLoaders使用爬取到的数据填充itemItemPipeline后处理(Post-process),存储爬取的数据Feedexports以不同格式输出爬取数据到不同的存储端LinkExtractors方便用于提取后续跟进链接的类。内置服务内置服务Logging了解Scrapy提供的logging功能。数据收集(StatsCollection)收集爬虫运行数据发送email当特定事件发生时发送邮件通知Telnet终端(TelnetConsole)使用内置的Python终端检查运行中的crawler(爬虫)WebService使用webservice对您的爬虫进行监控和管理解决特定问题解决特定问题常见问题(FAQ)常见问题的解决办法。调试(Debugging)Spiders学习如何对scrapyspider的常见问题进行debug。SpidersContracts学习如何使用contract来测试您的spider。实践经验(CommonPractices)熟悉Scrapy的一些惯例做法。通用爬虫(BroadCrawls)调整Scrapy来适应并发爬取大量网站(alotofdomains)。借助Firefox来爬取了解如何使用Firefox及其他有用的插件来爬取数据。使用Firebug进行爬取了解如何使用Firebug来爬取数据。调试内存溢出了解如何查找并让您的爬虫避免内存泄露。下载项目图片下载爬取的item中的图片。Ubuntu软件包在Ubuntu下下载最新的Scrapy。Scrapyd在生产环境中部署您的Scrapy项目。自动限速(AutoThrottle)扩展根据负载(load)动态调节爬取速度。Benchmarking在您的硬件平台上测试Scrapy的性能。Jobs:暂停,恢复爬虫学习如何停止和恢复爬虫DjangoItem使用Django模型编写爬取的item扩展扩展Scrapy架构概览了解Scrapy架构。下载器中间件(DownloaderMiddleware)自定义页面被请求及下载操作。Spider中间件(Middleware)自定义spider的输入与输出。扩展(Extensions)提供您自定义的功能来扩展Scrapy核心API在extension(扩展)和middleware(中间件)使用api来扩展Scrapy的功能参考参考命令行工具(Commandlinetools)学习命令行工具及所有可用的命令。RequestsandResponses了解代表HTTP请求和回复的request,response类Settings了解如何配置Scrapy及所有可用的设置。信号(Signals)查看如何使用及所有可用的信号异常(Exceptions)查看所有可用的exception以及相应的意义。ItemExporters快速将您爬取到的item导出到文件中(XML,CSV等格式)其他其他Releasenotes了解最近的Scrapy版本的修改。ContributingtoScrapy了解如何为Scrapy项目做出贡献。VersioningandAPIStability了解Scrapy如何命名版本以及API的稳定性。试验阶段特性了解最新的特性讨论讨论©版权所有2008-2014,writtenbyScrapydevelopers,translatedbySummer&Friends.最后更新于Apr10,2015.由Sphinx1.2.2创建。索引模块|下一页|上一页|Scrapy0.24.1文档»初窥初窥ScrapyScrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取[](更确切来说,网络抓取[])所设计的,也可以应用在获取API所返回的数据(例如AmazonAssociatesWebServices[])或者通用的网络爬虫。本文档将通过介绍Scrapy背后的概念使您对其工作原理有所了解,并确定Scrapy是否是您所需要的。当您准备好开始您的项目后,您可以参考入门教程。选择一个网站选择一个网站当您需要从某个网站中获取信息,但该网站未提供API或能通过程序获取信息的机制时,Scrapy可以助你一臂之力。以Mininova[]网站为例,我们想要获取今日添加的所有种子的URL、名字、描述以及文件大小信息。今日添加的种子列表可以通过这个页面找到:定义您想抓取的数据定义您想抓取的数据第一步是定义我们需要爬取的数据。在Scrapy中,这是通过ScrapyItems来完成的。(在本例子中为种子文件)我们定义的Item:importscrapyclassTorrentItem(scrapy.Item):url=scrapy.Field()name=scrapy.Field()description=scrapy.Field()size=scrapy.Field()编写提取数据的编写提取数据的Spider第二步是编写一个spider。其定义了初始URL()、针对后续链接的规则以及从页面中提取数据的规则。通过观察页面的内容可以发现,所有种子的URL都类似。其中,NUMBER是一个整数。根据此规律,我们可以定义需要进行跟进的链接的正则表达式:/tor/\d+。我们使用XPath[]来从页面的HTML源码中选择需要提取的数据。以其中一个种子文件的页面为例:观察HTML页面源码并创建我们需要的数据(种子名字,描述和大小)的XPath表达式。通过观察,我们可以发现文件名是包含在h1标签中的:h1Darwin-TheEvolutionOfAnExhibition/h1与此对应的XPath表达式://h1/text()种子的描述是被包含在id=description的div标签中:h2Description:/h2divid=descriptionShortdocumentarymadeforPlymouthCityMuseumandArtGalleryregardingthesetupofanexhibitaboutCharlesDarwininconjunctionwiththe200thanniversaryofhisbirth....对应获取描述的XPath表达式://div[@id='description']文件大小的信息包含在id=specifications的div的第二个p标签中:divid=specificationspstrongCategory:/strongahref=/cat/4Movies/a>ahref=/sub/35Documentary/a/ppstrongTotalsize:/strong150.62 megabyte/p选择文件大小的XPath表达式://div[@id='specifications']/p[2]/text()[2]关于XPath的详细内容请参考XPath参考[]。最后,结合以上内容给出spider的代码:fromscrapy.contrib.spidersimportCrawlSpider,Rulefromscrapy.contrib.linkextractorsimportLinkExtractorclassMininovaSpider(CrawlSpider):name='mininova'allowed_domains=['mininova.org']start_urls=[']rules=[Rule(LinkExtractor(allow=['/tor/\d+']),'parse_torrent')]defparse_torrent(self,response):torrent=TorrentItem()torrent['url']=response.urltorrent['name']=response.xpath(//h1/text()).extract()torrent['description']=response.xpath(//div[@id='description']).extract()torrent['size']=response.xpath(//div[@id='info-left']/p[2]/text()[2]).extract()returntorrentTorrentItem的定义在上面。执行执行spider,获取数据,获取数据终于,我们可以运行spider来获取网站的数据,并以JSON格式存入到scraped_data.json文件中:scrapycrawlmininova-oscraped_data.json命令中使用了feed导出来导出JSON文件。您可以修改导出格式(XML或者CSV)或者存储后端(FTP或者AmazonS3[]),这并不困难。同时,您也可以编写item管道将item存储到数据库中。查看提取到的数据查看提取到的数据执行结束后,当您查看scraped_data.json,您将看到提取到的item:[{url::[Darwin-TheEvolutionOfAnExhibition],description:[ShortdocumentarymadeforPlymouth...#...otheritems...]由于selectors返回list,所以值都是以list存储的(除了url是直接赋值之外)。如果您想要保存单个数据或者对数据执行额外的处理,那将是ItemLoaders发挥作用的
本文标题:scrapy官方手册,中文版
链接地址:https://www.777doc.com/doc-6374865 .html