2012-07-30 25 views
0

我想開發一個工具來做一些網頁抓取,我之前爲特定網站使用HTML敏捷包,但在這種情況下,我希望用戶成爲能夠通過選擇網站上的文本來指定他想要刪除的信息。使用未定義標籤的網頁刮取

我不知道的是,如果用戶選擇「產品1」,無論如何我可以獲得HTML標籤或其他東西,然後我可以提供算法,以便在整個文檔中搜索相同類型的標籤?

產品1

產品說明

價格$ 0.00

回答

0

加載HTML到一個的HTMLDocument對象,然後選擇其中文本輸入出現的第一個節點。該節點擁有一切你可能需要:

var doc = new HtmlDocument(); 
    string input = "Product 1"; 
    doc.LoadHtml("Your HTML here"); //Or doc.Load(), depends on how you're getting your HTML 

    HtmlNode selectedNode = doc.DocumentNode.SelectSingleNode(string.Format("//*[contains(text(),'{0}')]", input)); 

    var tagName = selectedNode.Name; 
    var tagClass = selectedNode.Attributes["class"].Value; 
    //etc 

當然,這一切都取決於實際的頁面結構,無論是「產品1」顯示其他地方,在頁面中的其它元素是否也使用含有相同的節點「產品1「等

+0

由於某些原因,它選擇了一個#text節點,檢查變量後,我發現父節點實際上包含所有需要的信息:)有沒有什麼辦法來調整XPath表達式來從第一個查詢? (我正在閱讀關於XPath表達式atm) – 2012-07-31 14:42:03

+0

我修改了XPath表達式。表達式確實檢索了文本節點,所以我使它更通用。看看這個新表達式是否適合你。 – rikitikitik 2012-08-01 01:11:57