使用html敏捷包扫描文本

时间:2013-03-04 15:28:15

标签: c# html-agility-pack

我正在使用一个字典应用程序,它显示从英语到孟加拉语的含义。我没有巨大的孟加拉语含义,但我有一个巨大的英语单词。通过使用这个英语单词,我想使用谷歌翻译器翻译成孟加拉语,从而使我的词典数据库。所以我从google翻译器中删除了含义。我使用了以下代码:

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");

元素在firebug工具上是 div.gt-baf-cell.gt-baf-word 。 但它在这里不起作用。它显示“对不起,意思未找到”。 这有什么问题????

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你的错误代码是 HtmlNodeCollection node = doc.DocumentNode.SelectNodes(“// div [@ class ='gt-baf-cell gt-baf-word']”);

因为doc.DocumentNode.InnerText不存在div class = gt-baf-cell gt-baf-word

检查doc.DocumentNode.InnerText。

为什么你试图找到不存在的“gt-baf-cell gt-baf-word”?