我尝试使用标准的XPath方法提取几个论坛帖子:
response.xpath('.//div[contains(@class, "Message userContent")]')
那个人会根据需要返回完整的评论列表。
但是,一旦我包含//text()
或string(...)
,列表的长度就会跳到100或150个项目,这使得无法掌握或迭代列表并将其与其他数据一起加入作者或约会......
normalize-space(...)
仅返回第一条评论。
它必须对html代码中的所有新行和中断执行某些操作,但在此阶段我不知道如何处理这些。
string-join(...[normalize-space()])
可以选择吗?
答案 0 :(得分:1)
了解每个XPath正在选择的内容:
.//div[contains(@class, "Message userContent")]
选择div
元素。.//div[contains(@class, "Message userContent")]//text()
选择这些div
元素的所有文本节点后代。normalize-space(.//div[contains(@class, "Message userContent")])
采用第一个此类div
元素的空格规范化字符串值。normalize-space(.//div[contains(@class, "Message userContent")])
是normalize-space()
传递序列时的运行时错误。 如果您想获取每个div
的字符串值:
div
元素进行迭代
语言并单独取字符串值。/string()
附加到XPath。