簡體   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