如何提取div中三个文本里的第二个文本?Scrapy CSS选择器问题
提取div标签中的第二个文本内容
你用 response.css('div.ml-1::text').get() 只能拿到第一个文本节点,因为 .get() 方法默认只返回匹配到的第一个结果。
解决方法有两种:
- 先获取所有匹配的文本节点列表,再取第二个元素(Python列表索引从0开始):
second_text = response.css('div.ml-1::text').getall()[1] - 直接用CSS伪类选择器定位第二个文本节点:
second_text = response.css('div.ml-1::text:nth-of-type(2)').get()
简单解释下:::text 会选中目标div下的所有直接文本节点,.getall() 会把这些文本全部收集成列表;而 :nth-of-type(2) 可以在CSS选择阶段就精准定位到第二个文本节点,再用 .get() 就能直接拿到内容。
内容的提问来源于stack exchange,提问作者ElormCodes1
相关产品推荐
相关产品推荐

