好的,所以我在这个网页上有这个 URL 列表,我想知道如何获取 URL 并将它们添加到 ArrayList?
http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A
我只想要列表中的 URL,查看它以了解我的意思。我自己尝试过,无论出于何种原因,它都需要所有其他 URL,除了我需要的 URL。
http://pastebin.com/a7hJnXPP
好的,所以我在这个网页上有这个 URL 列表,我想知道如何获取 URL 并将它们添加到 ArrayList?
http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A
我只想要列表中的 URL,查看它以了解我的意思。我自己尝试过,无论出于何种原因,它都需要所有其他 URL,除了我需要的 URL。
http://pastebin.com/a7hJnXPP
使用HTML 敏捷包
using (var wc = new WebClient())
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(wc.DownloadString("http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A"));
var links = doc.DocumentNode.SelectSingleNode("//div[@class='lst']")
.Descendants("a")
.Select(x => x.Attributes["href"].Value)
.ToArray();
}
如果您只想要列表中的那些,那么下面的代码应该可以工作(假设您已经将页面加载到了HtmlDocument
)
List<string> hrefList = new List<string>(); //Make a list cause lists are cool.
foreach (HtmlNode node animePage.DocumentNode.SelectNodes("//a[contains(@href, 'id=')]"))
{
//Append animenewsnetwork.com to the beginning of the href value and add it
// to the list.
hrefList.Add("http://www.animenewsnetwork.com" + node.GetAttributeValue("href", "null"));
}
//a[contains(@href, 'id=')]
将此 XPath 分解如下:
//a
选择所有<a>
节点...[contains(@href, 'id=')]
...包含href
包含文本的属性id=
。这应该足以让你继续前进。
顺便说一句,考虑到该页面上大约有 500 个链接,我建议不要在其自己的消息框中列出每个链接。500 个链接 = 500 个消息框 :(