从页面获取链接

时间:2015-02-01 01:59:56

标签: c# html-agility-pack

我正在尝试从Windows应用商店应用中的页面源获取链接。我正在使用HtmlAgilityPack,这是我的代码

HttpClient client = new HttpClient();
        client.MaxResponseContentBufferSize = 256000;
        client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 
        (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)");

        string source = await client.GetStringAsync(url);
        HtmlDocument doc = new HtmlDocument();
        doc.LoadHtml(source);
        List<String> links = doc
        .DocumentNode
        .SelectNodes("//a[@href]")
        .Select(node => node.Attributes["href"].Value)
        .ToList();

我收到错误

  

类型'System.Xml.XPath.IXPathNavigable'在一个。中定义       未引用的程序集。您必须添加对程序集的引用       'System.Xml.XPath,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'   在创建变量doc的位置。

但是当我从MicrosoftSDKs文件夹中添加对System.Xml.XPath的引用时,我正在

  

在模块mscorlib.dll

中找不到类型System.SystemException

如何解决?

2 个答案:

答案 0 :(得分:0)

看看这篇简单的文章: C# Scraping

例如,这很简单:

using System.Diagnostics;
using System.Net;

class Program
{
    static void Main()
    {
    // Scrape links from wikipedia.org

    // 1.
    // URL: http://en.wikipedia.org/wiki/Main_Page
    WebClient w = new WebClient();
    string s = w.DownloadString("http://en.wikipedia.org/wiki/Main_Page");

    // 2.
    foreach (LinkItem i in LinkFinder.Find(s))
    {
        Debug.WriteLine(i);
    }
    }
}

答案 1 :(得分:0)

我认为引用集会引入System.Xml.XPath的建议是不合适的。当我编译你的代码时,我无法解析HttpClient。在我添加对System.Net.Http的引用并在包含您的代码的文件顶部添加using System.Net.Http;后,它会立即编译(好吧,一旦我定义,例如var url = "http://apps.microsoft.com/windows/en-us/app/appstudio-contoso-sample-app/748084e6-e1da-40d5-9571-35c750b26d5e";,它就会编译)。