Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无效的XPath:字符串联接(.//div[@class=";static";]/text(),";)?_Xpath_Scrapy - Fatal编程技术网

无效的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())