Помогите дописать паука на C#

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by umanbest, 11 Dec 2010.

  1. umanbest

    umanbest New Member

    Joined:
    7 Dec 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Задача состоит в том чтобы просто собрать все ссылки с сайта. Вот код который я написал:
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Text.RegularExpressions;
    using System.Net;
    using System.Threading;
    
    namespace _7777777777
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    txtExpression.Text = @"href=""http:\/\/www\.obnovi\.com\/.*?\.html";
                    txtPath.Text = @"http://www.obnovi.com/";
                    string fullPath = txtPath.Text;
                    string result;
                    result = "";
    
                    result = GetInternetContent(fullPath);
                    List<string> href = new List<string>();
                    List<string> temphref = new List<string>();
                    temphref = GetHref(result, txtExpression.Text);
    
                    foreach (string str in temphref)
                    {
                        if (!href.Contains(str))
                        {
                            href.Add(str);
                        }
                    }
    
    
                    for (int i = 0; href.Count - i > 0; i++)
                    {
                        richTextBox1.Text += "\n" + href[i] + "\n";
                        List<string> temp = new List<string>();
                        temp = GetHref(GetInternetContent(href[i]), txtExpression.Text);
                        foreach (string str in temp)
                        {
                            if (!href.Contains(str)) 
                            {
                                href.Add(str);
                            }
                        }
                        this.Text = i.ToString();
                    }
                }
                catch(Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
    
            }
            //загружаем страницу
            static public string GetInternetContent(string fullPath)
            {
                HttpWebRequest req;
                HttpWebResponse resp;
                StreamReader sr;
                string content;
    
                req = (HttpWebRequest)WebRequest.Create(fullPath);
                resp = (HttpWebResponse)req.GetResponse();
                sr = new StreamReader(resp.GetResponseStream(), Encoding.UTF8);
                content = sr.ReadToEnd();
                sr.Close();
                resp.Close();
                return content;
            }
    
            //собираем ссылки
            static public List<string> GetHref(string result, string expr)
            {
                Regex rgx = new Regex(expr, RegexOptions.Compiled);
                MatchCollection mc = rgx.Matches(result);
                List<string> tempHref = new List<string>();
                List<string> href = new List<string>();
                foreach (Match m in mc)
                {
                    if (!tempHref.Contains(m.Value))
                    {
                        tempHref.Add(m.Value);
                        href.Add(Regex.Replace(m.Value, @"[^""]*?""", ""));
                    }
                }
                return href;
            }
    
        }
    }
    Но проблема в том что при загрузке 750ой страницы выдает ошибку the remote server returned an error 404 not found. Подскажите хотя бы идею что может вызывать эту ошибку.
     
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Так сложно загуглить HTTP 404...

    http://ru.wikipedia.org/wiki/Список_кодов_состояния_HTTP#404
     
  3. umanbest

    umanbest New Member

    Joined:
    7 Dec 2010
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Страница 100% существует.
     
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Ну тогда переведи еще раз с английского на русский "the remote server returned an error 404 not found" и убедись, что это "Удаленный сервер вернул ошибку 404 - не найдено". Просто так такая ошибка возникнуть не может, где-то либо косяк в запросе, либо и правда страница не существует.