看官方文档(链接附在文末),看到了关于get()、get()方法的使用,查阅网络没有资料,那就自己记录一下。y( . )耶y( . )耶y( . )耶y( . )耶y( . )耶y( . )耶y( . )耶y( . )耶y( . )耶~先说结论:对于scrapy.selector.unified.SelectorList对象,getall()==extract(),get()==extract_first()对于scrapy.selector.unified.Selector对象,getall()==extract(),get()!=extract_first()使用scrapy shell 进行测试scrapy shell https://gavbus668.com/得到如下结果:皆是常规操作返回html的前200个字符,看看没有发生错误response.text[:200]得到:Out[3]: ‘<html>rn<head>rn <meta charset=“utf-8”>rn <meta http-equiv=“X-UA-Compatible” content=“IE=edge”>rn <meta name=“renderer” content=“webkit”>rn <meta name=“viewport” content=“width=device-widt’bingo继续,使用Scrapy Selector下一步操作In [5]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)Out[5]:[<Selector xpath=’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’ data=‘DNW-025 彼女が 制服に着替えたら。5’>, <Selector xpath=’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’ data=‘rntttttt’>, <Selector xpath=’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’ data=‘rntttttt’>, <Selector xpath=’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’ data=’ / ‘>]In [10]: type(response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’))Out[10]: scrapy.selector.unified.SelectorList发现使用Selector得到的是一个SelectorList对象实例所以get() 、getall() 、extract() 、extract_first()是SelectorList对象实例的方法继续使用get() 、getall() 、extract() 、extract_first(),观察区别:In [6]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’).get()Out[6]: ‘DNW-025 彼女が制服に着替えたら。5’In [7]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’).getall()Out[7]: [‘DNW-025 彼女が制服に着替えたら。5’, ‘rntttttt’, ‘rntttttt’, ’ / ‘]In [8]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’).extract()Out[8]: [‘DNW-025 彼女が制服に着替えたら。5’, ‘rntttttt’, ‘rntttttt’, ’ / ‘]In [9]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’).extract_first()Out[9]: ‘DNW-025 彼女が制服に着替えたら。5’over,总结一下:对于scrapy.selector.unified.SelectorList对象get() == extract_first()返回的是一个list,里面包含了多个string,如果只有一个string,则返回[‘我很孤独’]这样的形式getall() == extract()返回的是string,list里面第一个stringextract_first()与get()有区别与Selector对象有关In [17]: type(response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’))Out[17]: scrapy.selector.unified.SelectorListIn [18]: type(response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0])Out[18]: scrapy.selector.unified.SelectorIn [19]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0].get()Out[19]: ‘DNW-025 彼女が制服に着替えたら。5’In [20]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0].getall()Out[20]: [‘DNW-025 彼女が制服に着替えたら。5’]In [21]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0].extract()Out[21]: ‘DNW-025 彼女が制服に着替えたら。5’In [22]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0].extract_first()—————————————————————————AttributeError Traceback (most recent call last)<ipython-input-22-9eada5e1e561> in <module>—-> 1 response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0].extract_first()AttributeError: ‘Selector’ object has no attribute ’extract_first’In [23]: response.xpath(’//[@id=“waterfall”]/div[1]/a/div[2]/span/text()’)[0]Out[23]: <Selector xpath=’//*[@id=“waterfall”]/div[1]/a/div[2]/span/text()’ data=‘DNW-025 彼女が制服に着替えたら。5’>发现:对于Selector类型的对象,并不能使用extract_first()方法,而使用get()可以文末附官方文档链接链接Scrapy官方教程——关于get()、getall()方法