C# 下载网页的一部分-数据挖掘
这基本上就是我正在做的。我从en.wikipedia.org上选择了一篇科学文章,并获得了一个编辑过的用户列表,以及他们编辑了这篇文章的次数。要获取此信息,我将按照页面中的链接获取指向toolserver的链接。我使用此页面检索排序列表中的编辑器,不包括匿名编辑器。这很有效,因为它有一个格式很好的列表(即使它有我不需要的日期) 然而,为了判断他们的可信度,我需要看一看顶级用户,看看他们贡献的顶级文章,看看他们是在编辑大量的科学文章还是只是随机的垃圾。我很难获得这些用户的数据,因为目前,我能找到的唯一显示用户历史的网站是 然而,获得一个用户的网页需要相当长的时间,至少需要20秒,然后我仍然需要解析出无用的数据,等等。我不需要接近我被迫下载的数据量。这是我到目前为止获取用户数据的代码:C# 下载网页的一部分-数据挖掘,c#,php,http,data-mining,C#,Php,Http,Data Mining,这基本上就是我正在做的。我从en.wikipedia.org上选择了一篇科学文章,并获得了一个编辑过的用户列表,以及他们编辑了这篇文章的次数。要获取此信息,我将按照页面中的链接获取指向toolserver的链接。我使用此页面检索排序列表中的编辑器,不包括匿名编辑器。这很有效,因为它有一个格式很好的列表(即使它有我不需要的日期) 然而,为了判断他们的可信度,我需要看一看顶级用户,看看他们贡献的顶级文章,看看他们是在编辑大量的科学文章还是只是随机的垃圾。我很难获得这些用户的数据,因为目前,我能找到的
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
$