Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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

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
Xml 如何在XPath中获取选定元素的文本?_Xml_Xpath_Web Scraping_Scrapy - Fatal编程技术网

Xml 如何在XPath中获取选定元素的文本?

Xml 如何在XPath中获取选定元素的文本?,xml,xpath,web-scraping,scrapy,Xml,Xpath,Web Scraping,Scrapy,我尝试使用标准XPath方法提取几个论坛帖子: response.xpath('.//div[contains(@class,“Message userContent”))) 这一个返回一个完整的评论列表 但是,一旦我包含//text()或字符串(…)列表的长度会增加到100或150个项目,这使得不可能掌握或迭代列表并将其与其他数据(如作者或日期)连接起来 规范化空格(…)只返回第一条注释 它必须处理html代码中的所有新行和中断,但在这个阶段我不知道如何处理这些 字符串连接(…[normali

我尝试使用标准XPath方法提取几个论坛帖子:

response.xpath('.//div[contains(@class,“Message userContent”)))

这一个返回一个完整的评论列表

但是,一旦我包含
//text()
字符串(…)
列表的长度会增加到100或150个项目,这使得不可能掌握或迭代列表并将其与其他数据(如作者或日期)连接起来

规范化空格(…)
只返回第一条注释

它必须处理html代码中的所有新行和中断,但在这个阶段我不知道如何处理这些


字符串连接(…[normalize-space()])
会是这里的一个选项吗?

了解每个XPath选择的内容:

  • //div[包含(@class,“Message userContent”)]
    选择
    div
    元素
  • //div[包含(@class,“Message userContent”)]//text()
    选择那些
    div
    元素的所有文本节点后代
  • XPath 1.0中的规范化空间(.//div[contains(@class,“Message userContent”))采用第一个此类
    div
    元素的空间规范化字符串值
  • XPath 2.0中的
    normalize-space(.//div[contains(@class,“Message userContent”)])
    在传递序列时是一个运行时错误
  • 如果要获取每个此类
    div的字符串值

    • XPath 1.0:迭代宿主中选定的
      div
      元素 语言,分别取字符串值
    • XPath2.0:
      /string()
      附加到XPath

    通过实现
    text()
    string()
    normalize-space()
    …共享HTML代码以及所需的输出和提到的XPath表达式。感谢您的概述!我认为最后一部分有帮助。我需要找出迭代部分,以及如何从列表中取出字符串值。文本直接放置在div元素中。。。blablabla…您可以通过#2中的XPath获得直接子文本节点的列表,但最后使用
    /text()
    而不是
    /text()
    。如果选定的
    div
    元素下没有标记,那么这个文本节点列表可能就满足您的需要。