2013-03-04 104 views
0

我與它們表示從英語到孟加拉語意義的字典應用程序的工作。我沒有龐大的孟加拉含義,但我有一個巨大的英語單詞。通過使用這個英文單詞,我想用谷歌翻譯器翻譯成孟加拉語,從而製作我的字典數據庫。所以,我放棄從谷歌translator.I意思用下面的代碼:刮使用文本HTML agilitypack

string meaning = "", bangla = ""; 

     HtmlWeb web = new HtmlWeb(); 
     HtmlAgilityPack.HtmlDocument doc = web.Load("http://translate.google.com/#en/bn/like"); 
     HtmlNodeCollection node = doc.DocumentNode.SelectNodes("//div[@class='gt-baf-cell gt-baf-word']"); 

     if (node != null) 
     { 
      foreach (HtmlNode n in node) 
      { 
       meaning = n.InnerText; 
       meaning = meaning.Trim(); 
       MessageBox.Show(meaning); 
      } 
     } 
     else 
      MessageBox.Show("Sorry,the meaning is not found"); 

的因素是對螢火蟲工具div.gt-BAF-cell.gt-BAF字。 但它沒有在這裏工作。它顯示「對不起,意思沒有找到」。 這裏有什麼問題?

+0

從我所看到的,div名稱的名稱爲 「GT-BAF-細胞GT-BAF-字」。這是一個單獨的字符串。沒有一個。在之間。 – shahkalpesh 2013-03-04 15:45:06

+0

@shahkapesh我也是這樣寫的「// div [@ class ='gt-baf-cellgt-baf-word']」但它也沒有工作。 – DarkenShooter 2013-03-04 15:48:45

+0

放置空間代替*。 - > gt-baf-cell * gt-baf-word – shahkalpesh 2013-03-04 15:52:42

回答

0

我覺得沒有辦法做到這一點使用HtmlAgilityPack

我嘗試這樣做:

web.UserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0"; 
doc = web.Load("http://translate.google.com/#en/bn/like"); 
webBrowser1.DocumentText = doc.DocumentNode.OuterHtml; 

,並給出了這個結果:http://jsbin.com/irijiz/1/edit

正如你可以看到它的不一樣你在瀏覽器上看到的,這就是爲什麼你的代碼無法正常工作。

有關詳細信息和替代檢查this

+0

所以,我能做些什麼???我需要這badly.In我的代碼什麼錯?@ Loclip – DarkenShooter 2013-03-04 16:02:55

+1

你的代碼有什麼錯,如果是簡單的網站,將工作,但谷歌似乎有一些機制,不允許網頁抓取..檢查此鏈接更多的替代解決方案http://stackoverflow.com/questions/6151668/alternative-to-google-translate-api – a1204773 2013-03-04 16:06:27

+0

我認爲那些'機制'簡單地稱爲JavaScript :) – 2013-03-06 06:58:25

0

你的錯誤碼是 HtmlNodeCollection節點= doc.DocumentNode.SelectNodes(「// DIV [@類= 'GT-BAF-細胞GT-BAF-字'] 「);

因爲doc.DocumentNode.InnerText不存在的div類= GT-BAF-細胞GT-BAF-字

檢查doc.DocumentNode.InnerText。

爲什麼你嘗試尋找不存在的 「GT-BAF-細胞GT-BAF-字」?