本帖最后由 la_vie_est_bell 于 2018-2-5 13:54 编辑
title = response.xpath('//ul/li/div')
上面这行代码选中的有两个div元素
有两个div元素
而第一个div元素下面没有h4
这就是为什么图一中有空列表输出。
所以应该改成title = response.xpath('//ul/li/div[2]')以此来选中第二个div元素。
那为什么会输出列表而不是像图二中直接输出字符串呢?
需要知道Selector和SelectorList的区别,对前者使用extract()会返回字符串,而对SelectorList使用extract()会返回列表:
title = response.xpath('//ul/li/div[2]') 返回SelectorList对象
for ti in title: 选中SelectorList对象中每一个Selector
a = ti.xpath('h4/a/text()').extract() 这句话是关键,ti.xpath('h4/a/text()')该部分返SelectorList对象,所以使用extract()会返回List。
应该改成a = ti.xpath('h4/a/text()').extract_first() 来选中字符串。