XPATH查詢,HtmlAgilityPack和提取文本


我一直試圖從名為“tim_new”的類中提取鏈接。我也得到了解決方案。

這裡給出了解決方案,片段和必要信息

上面說的XPATH查詢是"//a[@class='tim_new'] ,我的問題是,這個查詢如何區分片段的第一行(在上面的鏈接和片段的第二行中給出)。

更具體地說,這個XPATH查詢的字面翻譯(英文)是什麼。


此外,我想編寫幾行代碼來提取針對NSE:編寫的文本NSE:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

非常感謝幫助形成必要的選擇查詢。

我的代碼寫成:

<div class="FL gL_12 PL10 PT15">BSE: 523395 &nbsp;&nbsp;|&nbsp;&nbsp; NSE: 3MINDIA &nbsp;&nbsp;|&nbsp;&nbsp; ISIN: INE470A01017</div>

但這看起來不對。會感激一些幫助。

熱門答案

第一個選擇中的XPath讀取“選擇具有名為class的屬性且值為tim_new的所有文檔元素”。括號中的內容不是您要返回的內容,而是您應用於搜索的標準。

我沒有HTML Agility包,但如果你試圖查詢以“NSE:”作為文本的div,那麼第二個查詢的XPath應該只是“// div”然後你要過濾使用LINQ。

就像是

var nodes = 
    doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);

所以在英語中,“將所有立即包含文本的div元素返回給LINQ,然後檢查內部文本值是否包含NSE:”。同樣,我不確定語法是否完美,但這就是主意。

XPath“// div [@NSE:]”將返回所有具有名為NSE:的屬性的div,無論如何這都是非法的,因為屬性名稱中不允許使用“:”。您正在尋找元素的文本,而不是其中一個屬性。

希望有所幫助。

注意:如果您有嵌套的div,它們都包含文本,如<div>NSE: some text<div>NSE: more text</div></div>您將獲得重複的結果。





許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因