extract()和extact_first()的区别
extract()和extact_first()都是提取Selector
的data
部分。但现在你要先知道什么是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()都是提取Selector
的data
部分。但是extact_first()多做了一步,就是将提取的内容从列表里拿出来。红色框里已经画了出来。
还有便是extact_first()可以在找不到元素的情况下,避免IndexError
和返回none
.