0

さて、この Web ページにこの URL のリストがあります。URL を取得して ArrayList に追加するにはどうすればよいでしょうか?

http://www.animenewsnetwork.com/encyclopedia/anime.php?list=A

リストにある URL だけが必要です。それを見て、私が何を意味するかを確認してください。私は自分でやってみましたが、何らかの理由で、必要なものを除いて他のすべての URL が必要です。

   http://pastebin.com/a7hJnXPP
4

2 に答える 2

0

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();
}
于 2012-08-19T08:03:28.640 に答える
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=')]... hreftext を含む属性が含まれていますid=

それはあなたを動かすのに十分なはずです。

余談ですが、そのページには約 500 のリンクがあることを考えると、各リンクを独自のメッセージ ボックスにリストしないことをお勧めします。500 リンク = 500 メッセージボックス :(

于 2012-08-19T08:36:00.557 に答える