Scrapy入门scrapy简介Scrapy,Python开发的一个快速,灵活,可扩展性高的web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider爬虫等,继承这些基类可以轻松实现自己的爬虫。内容安装scrapy创建一个Scrapy项目定义提取的Item编写爬取网站的spider并提取Item编写ItemPipeline来存储提取到的Item(即数据)安装下列的安装步骤假定您已经安装好下列程序:Python2.7PythonPackage:pipandsetuptools.现在pip依赖setuptools,如果未安装,则会自动安装setuptools。lxml.大多数Linux发行版自带了lxml。如果缺失,请查看OpenSSL.除了Windows之外的系统都已经提供。您可以使用pip来安装Scrapy(推荐使用pip来安装Pythonpackage).使用pip安装:pipinstallScrapy创建项目在开始爬取之前,您必须创建一个新的Scrapy项目。进入您打算存储代码的目录中,运行下列命令:scrapystartprojecttutorial该命令将会创建包含下列内容的tutorial目录:这些文件分别是:scrapy.cfg:项目的配置文件tutorial/:该项目的python模块。之后您将在此加入代码。tutorial/items.py:项目中的item文件.tutorial/pipelines.py:项目中的pipelines文件.tutorial/settings.py:项目的设置文件.tutorial/spiders/:放置spider代码的目录.定义ItemItem是保存爬取到的数据的容器;其使用方法和python字典类似,并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。类似在ORM中做的一样,您可以通过创建一个scrapy.Item类,并且定义类型为scrapy.Field的类属性来定义一个Item。我们需要从dmoz中获取名字,url,以及网站的描述。对此,在item中定义相应的字段。编辑tutorial目录中的items.py文件:编写第一个爬虫(Spider)Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容,提取生成item的方法。为了创建一个Spider,您必须继承scrapy.Spider类,且定义以下三个属性:name:用于区别Spider。该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。start_urls:包含了Spider在启动时进行爬取的url列表。因此,第一个被获取到的页面将是其中之一。后续的URL则从初始的URL获取到的数据中提取。parse()是spider的一个方法。被调用时,每个初始URL完成下载后生成的Response对象将会作为唯一的参数传递给该函数。该方法负责解析返回的数据(responsedata),提取数据(生成item)以及生成需要进一步处理的URL的Request对象。以下为我们的第一个Spider代码,保存在tutorial/spiders目录下的dmoz_spider.py文件中:爬取进入项目的根目录,执行下列命令启动spider:scrapycrawldmozcrawldmoz启动用于爬取dmoz.org的spider,您将得到类似的输出:提取ItemSelectors选择器简介从网页中提取数据有很多方法。Scrapy使用了一种基于XPath和CSS表达式机制:ScrapySelectors。这里给出XPath表达式的例子及对应的含义:/html/head/title:选择HTML文档中head标签内的title元素/html/head/title/text():选择上面提到的title元素的文字//td:选择所有的td元素//div[@class=mine]:选择所有具有class=mine属性的div元素提取数据现在,我们来尝试从这些页面中提取些有用的数据。在我们的spider中加入这段代码:使用itemItem对象是自定义的python字典。您可以使用标准的字典语法来获取到其每个字段的值。(字段即是我们之前用Field赋值的属性):保存爬取到的数据命令行执行:scrapycrawldmoz-oitems.json