笨鸟编程-零基础入门Pyhton教程

 找回密码
 立即注册

Scrapy 教程

发布者: 笨鸟自学网



更多示例和模式

下面是另一个spider,它演示回调和以下链接,这次是为了抓取作者信息:

import scrapy


class AuthorSpider(scrapy.Spider):
    name = 'author'

    start_urls = ['http://quotes.toscrape.com/']

    def parse(self, response):
        author_page_links = response.css('.author + a')
        yield from response.follow_all(author_page_links, self.parse_author)

        pagination_links = response.css('li.next a')
        yield from response.follow_all(pagination_links, self.parse)

    def parse_author(self, response):
        def extract_with_css(query):
            return response.css(query).get(default='').strip()

        yield {
            'name': extract_with_css('h3.author-title::text'),
            'birthdate': extract_with_css('.author-born-date::text'),
            'bio': extract_with_css('.author-description::text'),
        }

这个蜘蛛将从主页开始,它将跟踪所有指向作者页面的链接,调用 parse_author 它们的回调,以及与 parse 像我们以前看到的那样回拨。

在这里,我们将回调传递给 response.follow_all 作为位置参数,以使代码更短;它还适用于 Request 。

这个 parse_author 回调定义了一个助手函数,用于从CSS查询中提取和清理数据,并用作者数据生成python dict。

这个蜘蛛展示的另一个有趣的事情是,即使同一作者引用了很多话,我们也不需要担心多次访问同一作者页面。默认情况下,scrappy过滤掉对已经访问过的URL的重复请求,避免了由于编程错误而太多地访问服务器的问题。这可以通过设置进行配置 DUPEFILTER_CLASS .

希望到目前为止,您已经很好地了解了如何使用scrappy跟踪链接和回调的机制。

作为另一个利用以下链接机制的蜘蛛示例,请查看 CrawlSpider 类,该类用于实现一个小规则引擎,您可以使用该引擎在上面编写爬虫程序。

另外,一个常见的模式是使用:ref:`trick将其他数据传递给回调<topics-request-response-ref-request-callback-arguments>`来构建包含来自多个页面的数据的项目。


上一篇:安装指南下一篇:命令行工具

Archiver|手机版|笨鸟自学网 ( 粤ICP备20019910号 )

GMT+8, 2024-11-21 20:27 , Processed in 0.040815 second(s), 17 queries .

© 2001-2020

返回顶部