在Python爬虫,Scrapy框架中,extract()
和extract_first()
都是用于从爬取到的HTML代码中提取数据的方法,二者的区别如下:
extract()
: 这个方法将匹配到的所有元素提取出来,并以列表形式返回。如果没有找到任何匹配项,则返回一个空列表。
举个例子,假设我们要从以下HTML代码中提取所有<a>
标签的链接地址:
<div class="container">
<a href="https://www.example.com/page1">Link 1</a>
<a href="https://www.example.com/page2">Link 2</a>
<a href="https://www.example.com/page3">Link 3</a>
</div>
我们可以使用以下代码提取所有链接地址:
links = response.css('div.container a::attr(href)').extract()
print(links)
输出结果为:
['https://www.example.com/page1', 'https://www.example.com/page2', 'https://www.example.com/page3']
extract_first()
: 这个方法仅提取匹配到的第一个元素,并以字符串形式返回。如果没有找到任何匹配项,则返回None
。
同样以上面的例子为例,如果我们只想提取第一个链接地址,我们可以使用以下代码:
link = response.css('div.container a::attr(href)').extract_first()
print(link)
输出结果为:
'https://www.example.com/page1'