无效的XPath:字符串联接(.//div[@class=";static";]/text(),";)?
以下操作将产生一个列表:无效的XPath:字符串联接(.//div[@class=";static";]/text(),";)?,xpath,scrapy,Xpath,Scrapy,以下操作将产生一个列表: xpath('.//div[@class="static"]/text()') 我想返回一个字符串 我试过: xpath('string-join(.//div[@class="static"]/text(), " ")') 及 两者都无效,我做错了什么?您有两个选择: 使用 '\n'.join(response.css("div.static::text").extract()) 在项目加载器中使用处理器:如果您经常使用,这是迄今为止最优雅的解决方案: 为什么
xpath('.//div[@class="static"]/text()')
我想返回一个字符串
我试过:
xpath('string-join(.//div[@class="static"]/text(), " ")')
及
两者都无效,我做错了什么?您有两个选择:
'\n'.join(response.css("div.static::text").extract())
为什么不直接执行
'.join(foo.xpath('.//div[@class=“static”]/text()).extract())
?这是计划B,我需要知道xpath是如何工作的,xpath通过新行将单个段落分解成一个列表,我希望它不要这样做string-join()
是xpath 2.0函数,但是scrapy只支持xpath 1.0,没有等效的XPath 1.0函数。所以建议的B计划似乎是你最好的选择…谢谢Tobias!我注意到它是一个xpath 2.0函数,但“scrapy xpath 2.0”没有返回任何有用的内容。您也可以尝试xpath(.string(.//div[@class=“static”]))[0]
'\n'.join(response.css("div.static::text").extract())