编写第一个爬虫(二)

因为 Scrapy 官方教程中爬取的 Domz 网站已经关闭了(2333),官方教程现在改用:" http://quotes.toscrape.com " 来作为例子,所以我们重写一下。

并且,Scrapy 版本已经更新到1.3,这里我们改用1.3版本来学习。




1. 编写第一个爬虫(Spider)

tutorial/spiders 文件夹下新建一个 Python 文件,命名为 quotes_spider.py ,编辑该文件:

class QuotesSpider(scrapy.Spider):
    name = "quotes"

    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
        ]
        # 用 parse 方法处理 urls 里面的 url
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)

    # 爬取相应信息
    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.css('small.author::text').extract_first(),
                'tags': quote.css('div.tags a.tag::text').extract(),
            }

start_requests() 可以用更简便的写法,把初始 url 放在 start_urls 列表中即可:

# -*- coding: utf-8 -*-

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.css('small.author::text').extract_first(),
                'tags': quote.css('div.tags a.tag::text').extract(),
            }




3.爬取

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

scrapy crawl quotes

crawl quotes 命令启动名为 quotes 的 spider,您将得到类似的输出:

2016-09-19 18:57:19 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>
{'tags': ['life', 'love'], 'author': 'André Gide', 'text': '“It is better to be hated for what you are than to be loved for what you are not.”'}
2016-09-19 18:57:19 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>
{'tags': ['edison', 'failure', 'inspirational', 'paraphrased'], 'author': 'Thomas A. Edison', 'text': "“I have not failed. I've just found 10,000 ways that won't work.”"}

(这里我省略了 Scrapy 执行时候的运行信息,只截取一段 print 的包含 'author' 和 'text' 的信息)




4.保存爬取到的数据

最简单存储爬取的数据的方式是使用 Feed exports:

scrapy crawl quotes -o items.json

该命令将采用 JSON 格式对爬取的数据进行序列化,并在根目录生成 items.json 文件。

编写第一个爬虫(二)_第1张图片

你可能感兴趣的:(编写第一个爬虫(二))