2011-11-13 65 views
1

我在PHP中使用簡單的dom解析器,我想使用HTML敏捷包轉換爲C#中的工作語句。C#HTML敏捷包/ PHP簡單Dom解析器

我真的很掙扎,甚至無法接近任何工作。

這裏是我工作的HTML:www.amazon.com/gp/offer-listing/B002UYSHMM/

這裏是我要轉換爲C#我的PHP DOM解析器代碼:

foreach($html->find('div.resultsset table tbody.result tr') as $article) 
{ 
    if($article->find('span.price', 0)) 
    { 
     // get retail 
     $item[$retail.$i++] = $article->find('span.price', 0)->plaintext; 
     // get soldby 

     if($article->find('img', 0)->getAttribute('alt') <> '') 
     { 
     $item[$soldby.$j++] = $article->find('ul.sellerInformation img', 0)->getAttribute('alt'); 
     } 
     else 
     { 
     $item[$soldby.$j++] = $article->find('ul.sellerInformation li a b', 0)->plaintext; 
     } 

     $ret['SellerInfo'] = $item; 
    } 
} 

如果任何人都可以幫助我會很感激!

回答

1

我從來沒有使用CSS選擇器與HTMLAgilityPack但使用XPath(其工作方式類似,但有不同的語法),它的工作原理是這樣的:它

HtmlWeb htmlWeb = new HtmlWeb(); 
HtmlDocument doc = htmlWeb.Load(url); 
doc.DocumentNode.SelectSingleNode(@"id('content')/div/div[1]/"); 

那真的。當你不使用SelectSingleNode()時,你可以使用LINQ來處理集合。所以,把你的例子,並把它在實踐中:

HtmlWeb htmlWeb = new HtmlWeb(); 
HtmlDocument doc = htmlWeb.Load(url); 
var price = Decimal.Parse(doc.DocumentNode.SelectSingleNode(@"id('price')").InnerText); 
// etc... 

如果你需要一些幫助抓住特定的DOM元素的XPath的有一個名爲XPath Checker一個偉大的Firefox插件,將即刻讓你的任何DOM元素的XPath通過右鍵單擊。它對我使用HTMLAgilityPack非常有用。