scrapy学习(一)

本篇教程中将带您完成下列任务:

  1. 创建一个Scrapy项目

  2. 定义提取的Item

  3. 编写爬取网站的 spider 并提取 Item

  4. 编写 Item Pipeline 来存储提取到的Item(即数据)


创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:

scrapy startproject tutorial


该命令将会创建包含下列内容的 tutorial 目录:

tutorial/
    scrapy.cfg         //含有scrapy.cfg文件的文件夹是项目根目录

    tutorial/
        __init__.py

        items.py

        pipelines.py

        settings.py

        spiders/
            __init__.py
            ...


定义Item

首先根据需要从dmoz.org获取到的数据对item进行建模。 我们需要从dmoz中获取名字,url,以及网站的描述。 对此,在item中定义相应的字段。编辑 tutorial 目录中的 items.py 文件:

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


编写spider

使用默认spider生成一个新的spider

scrapy genspider dmoz_spider dmoz.org    //scrapy genspider + spider名字+域名

生成的spider在spiders文件夹下,打开编写自己的spider

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] + '.html'
        with open(filename, 'wb') as f:
            f.write(response.body)

    爬虫名dmoz必须唯一
    允许的域名
    开始的url
    定义parse函数。
         文件名生成,返回合成后的html页面
         输出源文件

进入项目的根目录,执行下列命令启动spider:

scrapy crawl dmoz

该命令启动了我们刚刚添加的 dmoz spider, 向 dmoz.org 发送一些请求。 您将会得到类似的输出:

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 [scrapy] INFO: Spider opened
2014-01-23 18:13:08-0400 [scrapy] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/> (referer: None)
2014-01-23 18:13:09-0400 [scrapy] DEBUG: Crawled (200) <GET http://www.dmoz.org/Computers/Programming/Languages/Python/Books/> (referer: None)
2014-01-23 18:13:09-0400 [scrapy] INFO: Closing spider (finished)

参考资料:

http://scrapy-chs.readthedocs.org/zh_CN/1.0/intro/tutorial.html

你可能感兴趣的:(scrapy学习(一))