Python爬虫中如何实现extract()函数?
- 内容介绍
- 文章标签
- 相关推荐
本文共计405个文字,预计阅读时间需要2分钟。
使用Scrapy框架爬虫时,用xpath提取网页标签时,经常用到extract(),有时加上[0]或extract_first()。它们的意义区别如下:
1. extract():返回一个包含所有匹配元素的列表。例如,extract()([0])会返回列表的第一个元素。
2. [0]:用于从extract()返回的列表中获取第一个元素。相当于extract()[0]。
3. extract_first():直接返回第一个匹配元素,如果不存在则返回None。它比extract([0])更简洁。
简单来说,extract()返回所有匹配元素,extract_first()返回第一个匹配元素。使用[0]是为了获取列表中的第一个元素。在处理简单的HTML结构时,extract_first()更方便。
使用scrapy框架爬虫时,用到xpath提取网页标签时,时常用到extract(),有时加上[0],或是extract_first(),那么它们的意义分别是什么呢?
这是一个简单的html结构~
<li>123</li>
<li>abc</li>
</ul>
#1
xx.xpath("./ul[@class='list']/li") #xx是html文档
#xpath解析返回一个解析器列表
#2
xx.xpath("./ul[@class='list']/li").extract()
#output
#['123','abc]
#extract使提取内容转换为Unicode字符串,返回数据类型为list
#3
xx.xpath("./ul[@class='list']/li").extract()[0]
#output
#['123']
#返回列表中第一个元素
#4
xx.xpath("./ul[@class='list']/li")[0].extract()
#output与3相同
#返回SelectorList里的第一个元素
#5
#xx.xpath("./ul[@class='list']/li".extract_first()
#output与3相同
#和3作用效果相同
#6
xx.xpath("./ul[@class='list']/li")[0].extract()[0]
#output
#'1'
#返回SelectorList里的第一个元素的第一个字符
这下应该明白了吧。
本文共计405个文字,预计阅读时间需要2分钟。
使用Scrapy框架爬虫时,用xpath提取网页标签时,经常用到extract(),有时加上[0]或extract_first()。它们的意义区别如下:
1. extract():返回一个包含所有匹配元素的列表。例如,extract()([0])会返回列表的第一个元素。
2. [0]:用于从extract()返回的列表中获取第一个元素。相当于extract()[0]。
3. extract_first():直接返回第一个匹配元素,如果不存在则返回None。它比extract([0])更简洁。
简单来说,extract()返回所有匹配元素,extract_first()返回第一个匹配元素。使用[0]是为了获取列表中的第一个元素。在处理简单的HTML结构时,extract_first()更方便。
使用scrapy框架爬虫时,用到xpath提取网页标签时,时常用到extract(),有时加上[0],或是extract_first(),那么它们的意义分别是什么呢?
这是一个简单的html结构~
<li>123</li>
<li>abc</li>
</ul>
#1
xx.xpath("./ul[@class='list']/li") #xx是html文档
#xpath解析返回一个解析器列表
#2
xx.xpath("./ul[@class='list']/li").extract()
#output
#['123','abc]
#extract使提取内容转换为Unicode字符串,返回数据类型为list
#3
xx.xpath("./ul[@class='list']/li").extract()[0]
#output
#['123']
#返回列表中第一个元素
#4
xx.xpath("./ul[@class='list']/li")[0].extract()
#output与3相同
#返回SelectorList里的第一个元素
#5
#xx.xpath("./ul[@class='list']/li".extract_first()
#output与3相同
#和3作用效果相同
#6
xx.xpath("./ul[@class='list']/li")[0].extract()[0]
#output
#'1'
#返回SelectorList里的第一个元素的第一个字符
这下应该明白了吧。

