首页 > 技术文章 > extract()和extact_first()的区别

busui 2017-07-20 09:54 原文

extract()extact_first()都是提取Selectordata部分。但现在你要先知道什么是Selector
Selector是选择器的意思。具体定义我不知道,但通过下面的例子,你就可以知道选择器是个什么东东。首先看一段代码:

<head>
	<meta charset="UTF-8">
	<title>Quotes to Scrape</title>
</head>

这里,你还要知道response是什么:它是scrapy.Request返回的一个 TextResponse的实例,以参数形式传递给回调函数。上面的代码便是response.text中的一部分.关于response.text的全部内容可以点击这个网站,调出开发者工具查看。
安装好scrapy后,在cmd下输入scrapy shell "http://quotes.toscrape.com/page/1/",然后再输入 response.css('title')便可以看到:

    [<Selector xpath='descendant-or-self::title' data='<title>Quotes to Scrape</title>'>]

这便是选择器
再看一下下图:

图中,我们可以看到,extract()extact_first()都是提取Selectordata部分。但是extact_first()多做了一步,就是将提取的内容从列表里拿出来。红色框里已经画了出来。
还有便是extact_first()可以在找不到元素的情况下,避免IndexError和返回none.

推荐阅读