天天看点

Python网络爬虫4 ---- Linux下编写最简单的scrapy网络爬虫项目

 创建一个项目 Creating a project

      1 进入到想要创建项目的目录: scrapy startproject tutorial

         这样就可以创建了一个新的scrapy项目tutorial

      2 看一下项目的树形图

       3 简单的介绍一下每个文件的用处

        scrapy.cfg   是项目的配置文件

        tutorial/        是项目的入口

        items.py      是项目的数据字段文件

        pipelines.py 是项目的管道文件

        settings.py   是项目的配置文件

        spiders/       是项目中放网络蜘蛛的目录

 定义我们要的数据字段 Defining our Item

     1 定义自己所需要的数据字段是从我们爬取下来的数据中提取的

     2 定义字段在items.py中定义Item类来实现的

     3 我们在items.py中定义出三个字段,titile和link以及desc

创建第一个网络蜘蛛 Our first Spider

     1 网络蜘蛛是指从用户定义好的一组域中爬取数据

     2 要创建一个网络蜘蛛,我们必须在spiders/ 目录下创建一个文件

     3 我们创建第一个网络蜘蛛,保存为dmoz_spider.py

       name              是网络蜘蛛的名称,名称要唯一

       start_urls        是网络蜘蛛开始爬取的第一个url

       parse()函数    是网络蜘蛛爬取后response的对象,负责解析响应数据

运行项目 Crawling

       1 回到这个项目的最顶层运行:scrapy crawl dmoz

      2 有如下结果

      3 运行完这个项目之后,在这个项目tutorial产生两个文件Books和Resources

项目是怎样工作的? What just happened under the hood?

      scrapy对定义在spider里面的每一个url产生一个http的request请求,然后通过parse()函数进行回滚处理。

提取数据字段 Extracting Items

      1 有几种方法从web页面中提取数据,比如XPath和CSS

      2 几个XPath例子的解释

         /html/head/title: 选择所有head内部的title内容

         /html/head/title/text(): 选择所有的位于title内部的text内容

         //td: 选择所有的<td>元素

         //div[@class="mine"]: 选择所有的class名叫mine的div元素

      3 选择器的四个基本方法

         xpath(): 返回一个选择器列表,每一个代表xpath选择的

         css(): 返回一个选择器列表,每一个代表css选择的

         extract(): 返回一个unicode字符串

         re(): 返回一个unicode字符串从正则表达式中选出的

      4 为了说明使用selectors,我们使用scrapy shell

         回到项目的最顶层: scrapy shell "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/"

      5 出现如下

       6 我们可以按照以下的方法试试

      7 通过上面的分析,我们可以把我们的网络蜘蛛spider改成以下代码

       8 最后使用上我们自己定义的Item,Item就像Python里面的字典一样

        9 最简单的存储爬取数据方法是使用Feed exports,使用如下命令

         scrapy crawl dmoz -o items.json -t json 

         这个命令将生成items.json文件,包含所有爬取的字段