繁体   English   中英

如何使用 lxml.html 从 HTML 元素获取文本

[英]How to get text from HTML element by using lxml.html

我一直在尝试从 web 页面https://www.list-org.com/company/11665809获取托管在<div>元素中的全文。
该元素应包含一个子字符串“Арбитраж”。
确实如此,因为我的代码

for div in tree.xpath('.//div[contains(text(), "Арбитраж")]'):
    print(div)

返回响应

Element div at 0x15480d93ac8

在此处输入图像描述

但是当我尝试使用方法div.text获取全文本身时,它返回None
我认为这是一个奇怪的结果。 我应该怎么办?
任何帮助将不胜感激。 以及关于学习 HTML(不是一个精明的程序员)基础知识的源的建议,以避免将来出现这样一个简单的问题。

这是当 xpath 由宿主语言和库处理时发生的这些奇怪的事情之一。 当您使用 xpath 表达式时

 .//div[contains(text(), "Арбитраж")] 

搜索是根据 xpath 规则执行的,该规则认为目标文本包含在目标div中。 当您将 go 转到下一行时:

print(div.text)

您正在使用 lxml.html,它显然不将目标文本视为div文本的一部分,因为它前面有<i>标记。 要实现它,使用 lxml.html,您必须使用:

print(div.text_content())

或仅使用 xpath:

print(tree.xpath('.//div[contains(text(), "Арбитраж")]/text()')[0])

似乎 lxml.etree 和 beautifulsoup 使用不同的方法。 在这里看到这个有趣的讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM