Scrapy爬虫 -- 02

爬虫最基本的部分是要将网页下载,而最重要的部分是过滤 -- 获取咱们须要的信息。java

而scrapy正好提供了这个功能:python

首先咱们要定义items:数据结构

Itemsare containers that will be loaded with the scraped data; they work like simple python dicts but provide additional protection against populating undeclared fields, to prevent typos.dom

摘自官网,大意就是说iteams是用来存储抓取的数据结构,提供相对与python字典类型额外的类型保护。(这个具体的保护方式待研究)scrapy

示例以下:ide

project/items.py
函数

import scrapyclass DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

而后咱们须要编写Spider,抓取网页并选择信息,将其放入items之中。网站

示例以下:url

import scrapyclass DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        filename = response.url.split("/")[-2]
        with open(filename, 'wb') as f:
            f.write(response.body)

说明:spa

  1. name Spider的名字,这个名字要在这个项目之中惟一,缘由稍后就知道了。

  2. allowed_domains,这个是域名设置,便是否抓取其余域名,通常摄制成要start_urls中地址的域名便可

  3. start_urls 这是一个列表,表示scrapy抓取网页的起始位置,以样例为例,若是你要抓取http://www.dmoz.org/Computers/Programming/Languages/Python/Books/中全部的图书,那start_urls就是上述网址。
  4. parse函数 我的认为相似于java中接口的概念,scrapy向网站发出request,而后调用DmozSpider中的parse函数对返回的response进行处理。

开始启动蜘蛛:

scrapy crawl dmoz

正常的化输出以下:

2014-01-23 18:13:07-0400 [scrapy] INFO: Scrapy started (bot: tutorial)
2014-01-23 18:13:07-0400 [scrapy] INFO: Optional features available: ...
2014-01-23 18:13:07-0400 [scrapy] INFO: Overridden settings: {}
2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled extensions: ...
2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled downloader middlewares: ...
2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled spider middlewares: ...
2014-01-23 18:13:07-0400 [scrapy] INFO: Enabled item pipelines: ...
2014-01-23 18:13:07-0400 [dmoz] INFO: Spider opened
2014-01-23 18:13:08-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None)
2014-01-23 18:13:09-0400 [dmoz] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None)
2014-01-23 18:13:09-0400 [dmoz] INFO: Closing spider (finished)

待续

相关文章
相关标签/搜索