是否可以只读取并返回HttpWebResponse.GetResponseStream的一部分?

时间:2013-09-22 13:53:39

标签: c# httpwebresponse getresponsestream

我到处搜寻,我似乎无法找到任何可以为我解答的地方......如果有人能提供帮助,真的会很棒。

所以基本上,我最近在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)了一段时间。但一般来说,我的知识在编程时非常基础,所以要理解。

感谢阅读。

0 个答案:

没有答案