好的,我在这个网页上有这个URL列表,我想知道如何获取URL并将它们添加到ArrayList中?
http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A
我只想要列表中的URL,看看它是什么意思。我尝试自己做,无论出于何种原因,它除了我需要的所有其他URL之外。
http://pastebin.com/a7hJnXPP
答案 0 :(得分:0)
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();
}
答案 1 :(得分:0)
如果你只想要列表中的那些,那么下面的代码应该有用(假设你已经将页面加载到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个消息框:(