我到处搜寻,我似乎无法找到任何可以为我解答的地方......如果有人能提供帮助,真的会很棒。
所以基本上,我最近在C#中制作了一个程序,它应该检查网站源代码的某些部分,并返回特定匹配的URL。到目前为止我所做的是我使用while循环遍历代码,具体取决于在每个循环中增加的变量(member_id)(除非找到匹配)。在每个循环中,源代码也从域网站 / profile / + member_id中读取(其中网站是网站的名称,显然),并检查其内容可能的比赛。
虽然,这种方法的主要问题是花费太多时间。我已经计算过,如果我使用我当前的方法浏览网站,则需要大约一周的时间(我想查看有50万页。我不希望它快速进入,但是来吧...)。我的问题是,有什么方法可以解决这个问题吗?我只需要来自每个页面的源代码中的一小部分(只有head-element),所以读取其他内容时感觉有点不必要。
这是我目前得到的代码(*网站*和*匹配*实际上是其他东西):
using System;
using System.Net;
using System.Text;
using System.IO;
static void Main()
{
int member_id = 1;
while (member_id < 486252) // will change to non-constant value later
{
string URL = "http://*website*/profile/" + member_id;
StringBuilder content = new StringBuilder();
byte[] b = new byte[310]; // non-constant value will come later...
HttpWebRequest req = (HttpWebRequest) WebRequest.Create(URL);
HttpWebResponse res = (HttpWebResponse) req.GetResponse();
Stream response = res.GetResponseStream();
int x;
string translated;
do
{
x = response.Read(b, 0, b.Length);
if (x != 0)
{
content.Append(Encoding.ASCII.GetString(b, 0, x));
}
} while (x > 0);
member_id++;
if (content.ToString().Contains("<title>*Match*</title>"))
{
Console.WriteLine("Match has been found!"); // Just for debugging
member_id = 500000; // Lazy, temporary method
}
Console.WriteLine(content.ToString()); // Just for debugging
Console.WriteLine(content.ToString().Length); // Just for debugging
Console.ReadKey(); // Also just for debugging
}
}
我试过搞乱b数组大小,Read参数和GetString参数。这些都没有奏效,尽管我也没想到。现在,我有点迫切想要一个诚实的解决方案。
我已经获得了实际从教程中找到源代码的部分,并进行了一些个人修改。我昨天开始使用C#,虽然我已经使用C ++和其他一些语言(比如PHP)了一段时间。但一般来说,我的知识在编程时非常基础,所以要理解。
感谢阅读。