1

我到处搜索,我似乎找不到任何可以为我回答这个问题的地方......如果有人可以提供帮助,那就太好了。

所以基本上,我最近用 C# 编写了一个程序,它应该检查站点源代码的某些部分,并返回特定匹配的 URL。到目前为止,我所做的是,我已经使用 while 循环遍历代码,这取决于在每个循环中增加的变量 (member_id)(除非找到匹配项)。在每个循环中,还会从域网站/profile/ + member_id 中读取源代码(其中website显然是网站的名称),并检查其内容是否可能匹配。

但是,这种方法的主要问题是它需要太多时间。我计算过,如果我用我目前的方法浏览网站,大约需要一周时间(我想浏览 500 000 个页面。我并不指望它会很快,但是来吧...)。我的问题是,有没有办法解决这个问题?我只需要每一页的一小部分源代码(只有 head 元素),所以感觉有点没必要阅读其他所有内容。

这是我目前得到的代码(*website* 和 *match* 真的是别的东西):

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 数组大小、读取参数和 GetString 参数。这些都不起作用,尽管我也没想到。现在,老实说,我有点急于寻求解决方案。

我已经从教程中获得了实际找到源代码的部分,并进行了一些个人修改。我昨天从 C# 开始,虽然我已经使用 C++ 和其他一些语言(如 PHP)有一段时间了。但总的来说,在编程方面,我的知识非常基础,所以要理解。

谢谢阅读。

4

0 回答 0