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

时间:2018-06-08 15:09:57

标签: xml xpath web-scraping scrapy

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

response.xpath('.//div[contains(@class, "Message userContent")]')

那个人会根据需要返回完整的评论列表。

但是,一旦我包含//text()string(...),列表的长度就会跳到100或150个项目,这使得无法掌握或迭代列表并将其与其他数据一起加入作者或约会......

normalize-space(...)仅返回第一条评论。

它必须对html代码中的所有新行和中断执行某些操作,但在此阶段我不知道如何处理这些。

string-join(...[normalize-space()])可以选择吗?

1 个答案:

答案 0 :(得分:1)

了解每个XPath正在选择的内容:

  1. .//div[contains(@class, "Message userContent")]选择div元素。
  2. .//div[contains(@class, "Message userContent")]//text()选择这些div元素的所有文本节点后代。
  3. XPath 1.0中的
  4. normalize-space(.//div[contains(@class, "Message userContent")])采用第一个此类div元素的空格规范化字符串值。
  5. XPath 2.0中的
  6. normalize-space(.//div[contains(@class, "Message userContent")])normalize-space()传递序列时的运行时错误。
  7. 如果您想获取每个div的字符串值:

    • XPath 1.0:对主机中选定的div元素进行迭代 语言并单独取字符串值。
    • XPath 2.0:/string()附加到XPath。