【问题标题】:Web crawler time out网络爬虫超时
【发布时间】:2012-01-15 19:37:14
【问题描述】:

我正在开发一个简单的网络爬虫来获取 URL,爬取网站上的一级链接并使用 RegEx 从所有页面中提取邮件...

我知道这有点草率,这只是开始,但我总是在运行脚本 2 分钟后得到“操作超时”..

 private void button1_Click(object sender, System.EventArgs e)
    {

        string url = textBox1.Text;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        StreamReader sr = new StreamReader(response.GetResponseStream());
        string code = sr.ReadToEnd();
        string re = "href=\"(.*?)\"";
        MatchCollection href = Regex.Matches(code, @re, RegexOptions.Singleline);
        foreach (Match h in href)
        {

            string link = h.Groups[1].Value;
            if (!link.Contains("http://"))
            {
                HttpWebRequest request2 = (HttpWebRequest)WebRequest.Create(url + link);
                HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
                StreamReader sr2 = new StreamReader(response.GetResponseStream());
                string innerlink = sr.ReadToEnd();


                MatchCollection m2 = Regex.Matches(code, @"([\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?)", RegexOptions.Singleline);


                foreach (Match m in m2)
                {
                    string email = m.Groups[1].Value;

                    if (!listBox1.Items.Contains(email))
                    {
                        listBox1.Items.Add(email);
                    }
                }
            }
        }

         sr.Close();
        }

【问题讨论】:

  • 帮您解决什么问题?提出具体问题以获得答案。
  • 为什么要重新发明轮子,Html Agility Pack 让生活变得更轻松。 htmlagilitypack.codeplex.com
  • 我需要帮助找出导致超时的原因..

标签: c# web-crawler


【解决方案1】:

不要使用正则表达式解析 Html。为此使用 Html Agility Pack。

什么是 Html Agility Pack (HAP)?

这是一个敏捷的 HTML 解析器,它构建了一个读/写 DOM 并支持普通的 XPATH 或 XSLT(你实际上不必了解 XPATH 或 XSLT 就可以使用它,不用担心......)。它是一个 .NET 代码库,允许您解析“网络之外”的 HTML 文件。解析器对“真实世界”格式错误的 HTML 非常宽容。对象模型与 System.Xml 的提议非常相似,但用于 HTML 文档(或流)。

更多信息

【讨论】:

    【解决方案2】:

    Oded 的评论是正确的,我们需要知道您具体需要什么帮助;但是,我至少可以将您指向 HtmlAgility Pack,因为它可以解决您的大部分网络抓取问题。

    祝你好运!

    马特

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 2012-08-01
      • 2015-05-12
      相关资源
      最近更新 更多