0

我想从链接中删除所有单词http://search.freefind.com/siteindex.html?id=59478474<r=10240&fwr=0&pid=i&ics=1 我试过这样的事情:

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

if (nodes != null)
{

    foreach (HtmlNode n in nodes)
    {
         link = n.InnerText;
        my_link.Add(link);
        MessageBox.Show(link);
    }

}
else
    MessageBox.Show("no wordfound ");

我的expexted输出应该像

a    
aa
aachhe
aagrashi
aagun
aaj
aam
aanka
aankhi
aar
aashman
abāddhō
abāddhōtā
abadh
..
..

但是没有用??它显示“找不到单词”意味着它返回 null。在这种情况下,我怎样才能从 <a> 标记中获取所有文本??? 谁能告诉我 SelectNodes("") 应该是什么???

4

4 回答 4

0

你的问题是

doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");

返回null,如此处所述

那是因为a元素中没有属性等于您加载的 html中的font元素。classsearch-index-fontdoc


如果您更改传递给的 xpathSelectNodes以选择存在的内容,那么您的代码将采用不同的路径。在不知道您要实现什么的情况下,我无法提供进一步的建议。


您可以使用 HAP 来解析有效的 html,即使用它来识别脚本元素。然后你必须手动滚动一些东西来解析脚本标签的内部文本来提取你想要的东西。

最终,您想要的是孟加拉语单词列表。

于 2013-02-22T14:18:14.353 回答
0

试试这个:

doc.DocumentNode.SelectNodes("//a[@class='search-index-links']");

代替

doc.DocumentNode.SelectNodes("//font[@class='search-index-font']//a");
于 2013-02-22T14:26:47.910 回答
0
HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc =
    web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']");
string link = string.Empty;
if (nodes != null)
{
    foreach (var item in nodes)
    {
        var value =
        item.Elements("script").ToList();
        foreach (var items in value)
        {
            link += items.NextSibling.InnerText+ "\n";
        }
    }
    MessageBox.Show(link);
}
else
    MessageBox.Show("no wordfound ");
于 2013-02-22T14:34:10.480 回答
0

<script>您需要在标签(不是<a>您所说的标签)之后搜索下一个文本节点,在<font class='search-index-font'>. 这个 xpath 表达式可以解决问题:

//font[@class='search-index-font']/script/following-sibling::text()[1]

而这段代码:

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://search.freefind.com/siteindex.html?id=59478474&ltr=10240&fwr=0&pid=i&ics=1");
HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//font[@class='search-index-font']/script/following-sibling::text()[1]");

将返回您需要的文本节点:

a
aa
aachhe
aagrashi
aagun
aaj
aam
aanka
aankhi
aar
...
于 2013-02-22T14:55:08.230 回答