C# 下载网页的一部分-数据挖掘

C# 下载网页的一部分-数据挖掘,c#,php,http,data-mining,C#,Php,Http,Data Mining,这基本上就是我正在做的。我从en.wikipedia.org上选择了一篇科学文章,并获得了一个编辑过的用户列表,以及他们编辑了这篇文章的次数。要获取此信息,我将按照页面中的链接获取指向toolserver的链接。我使用此页面检索排序列表中的编辑器,不包括匿名编辑器。这很有效,因为它有一个格式很好的列表(即使它有我不需要的日期) 然而,为了判断他们的可信度,我需要看一看顶级用户,看看他们贡献的顶级文章,看看他们是在编辑大量的科学文章还是只是随机的垃圾。我很难获得这些用户的数据,因为目前,我能找到的

这基本上就是我正在做的。我从en.wikipedia.org上选择了一篇科学文章,并获得了一个编辑过的用户列表,以及他们编辑了这篇文章的次数。要获取此信息,我将按照页面中的链接获取指向toolserver的链接。我使用此页面检索排序列表中的编辑器,不包括匿名编辑器。这很有效,因为它有一个格式很好的列表(即使它有我不需要的日期)

然而,为了判断他们的可信度,我需要看一看顶级用户,看看他们贡献的顶级文章,看看他们是在编辑大量的科学文章还是只是随机的垃圾。我很难获得这些用户的数据,因为目前,我能找到的唯一显示用户历史的网站是

然而,获得一个用户的网页需要相当长的时间,至少需要20秒,然后我仍然需要解析出无用的数据,等等。我不需要接近我被迫下载的数据量。这是我到目前为止获取用户数据的代码:

    static string getWebPage(string url)
    {
        WebClient client = new WebClient();
        client.Headers.Add("user-agent",
            "Mozilla/5.0 (Windows; Windows NT 5.1; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4");

        return client.DownloadString(url);
    }

    static void Main(string[] args)
    {
        string url = "http://en.wikipedia.org/w/index.php?title=Special:Contributions&limit=50&target=Aquirata";

        string page = getWebPage(url);
        var lines = page.Split('\n', '\r');
        var edits = lines.Where(t => t.StartsWith("<li class"));
        foreach (string s in edits)
            Console.WriteLine(s);
        Console.ReadLine();
    }
静态字符串获取网页(字符串url)
{
WebClient客户端=新的WebClient();
client.Headers.Add(“用户代理”,
“Mozilla/5.0(Windows;Windows NT 5.1;rv:1.9.2.4)Gecko/20100611 Firefox/3.6.4”);
返回client.DownloadString(url);
}
静态void Main(字符串[]参数)
{
字符串url=”http://en.wikipedia.org/w/index.php?title=Special:Contributions&limit=50&target=Aquirata";
字符串页面=获取网页(url);
变量行=page.Split('\n','\r');

var edits=lines.Where(t=>t.StartsWith(“我认为维基百科提供了他们的数据供下载(所以你不必从HTML页面中删除)

见:


HTH

我认为维基百科提供了他们的数据供下载(因此你不必从HTML页面中删除)

见:


HTH

我认为您可以将WIKI作为XML处理,这样您就可以使用XPath来获取所需的数据。

我认为您可以将WIKI作为XML处理,这样您就可以使用XPath来获取所需的数据。

只选择文档的某一部分可以通过范围请求来完成,该范围请求记录在中

例如:

$ curl -H"range: bytes=1-20" www.apache.org
!DOCTYPE HTML PUBLIC
$

可以使用范围请求仅选择文档的特定部分,该范围请求记录在中

例如:

$ curl -H"range: bytes=1-20" www.apache.org
!DOCTYPE HTML PUBLIC
$