1 回答

TA贡献1812条经验 获得超5个赞
<a href="//detail.tmall.com/item.htm?id=612529092115&skuId=4486436443940&standard=1&user_id=2202421911399&cat_id=2&is_b=1&rn=c9a973f4c51d2bf839339810354ff07a" target="_blank" title="Apple/苹果 Apple/苹果 10.5 英寸 iPad Air" data-p="8-11" >
Apple/苹果 Apple/苹果 <span class=H>10.5</span> <span class=H>英寸</span> <span class=H>iPad</span> <span class=H>Air</span>
</a>
如您所见,您尝试获取的名称被拆分为多个span元素。
您的 css 选择器仅选择作为a元素的直接子元素的文本节点,因此它不会获取这些元素的内容。
您可以修改选择器以获取所有后代并加入它们,但我建议改用normalize-space()xpath 函数。
>>> product.css('.productTitle a::text').extract()
['\nApple/苹果 ', ' ', ' ', ' ', '\n']
>>> product.css('.productTitle a ::text').extract()
['\nApple/苹果 ', '10.5', ' ', '英寸', ' ', 'iPad', ' ', 'Air', '\n']
>>> product.css('.productTitle a').xpath('normalize-space()').get()
'Apple/苹果 10.5 英寸 iPad Air'
添加回答
举报