Beispiel #1
0
        /// <summary>
        /// Procesa una Uri de resultados. Descarga el contenido y lo almacena localmente.
        /// </summary>
        /// <param name="result">La Uri de resultados.</param>
        /// <returns>true si correcto, false si hay algún error.</returns>
        protected bool ProcessResult(Data.DataUri result)
        {
            Console.WriteLine("Processing Result " + result.Id + "(" + result.Parent + ") : " + result.AbsoluteUri);

            try
            {
                // Utilizamos una estructura con StreamWriter para almacenar en ficheros los contenidos de las uris de resultados
                String file = CreateLocalFile();
                System.IO.StreamWriter fileSW = new StreamWriter(file);
                // Descargamos el uri resultado
                String uriData = Download(result.AbsoluteUri);
                fileSW.Write(uriData);
                fileSW.Close();
                //Para guardar el fichero se usa:
                result.Cache = System.IO.Path.GetFileNameWithoutExtension(file);

                // Si la descarga es correcta
                Console.WriteLine(" : " + result.Cache);
                return(true);
            }
            catch { }

            // Si no es correcta (ha saltado excepcion en el try), error
            Console.WriteLine(" : failure");
            return(false);
        }
Beispiel #2
0
        /// <summary>
        /// Procesa una Uri semilla. Navega por los resultados e inserta nuevas Uris de resultados en la base de datos.
        /// </summary>
        /// <param name="seed">La Uri semilla.</param>
        /// <returns>true si correcto, false si hay algún error</returns>
        protected bool ProcessSeed(RAI.Crawler.Data.DataUri seed)
        {
            Console.WriteLine("Processing Seed " + seed.Id + " : " + seed.AbsoluteUri);

            Uri uriPaginacion = new Uri(seed.AbsoluteUri);

            try
            {
                // Mientras haya más resultados y no haya error
                while (uriPaginacion != null)
                {
                    // Extraer Uris de resultados e insertar en la base de datos

                    // Descargamos el contenido de la Uri semilla
                    String content = Download(uriPaginacion.AbsoluteUri);
                    // Buscamos coincidencias en el contenido descargado con la expresion regular que busca uris de resultados
                    MatchCollection seedUris = GoogleCrawler._resultRegex.Matches(content);
                    // Para cada uri obtenida en el match insertamos un nuevo registro en la base de datos.
                    foreach (Match uri in seedUris)
                    {
                        // Insertamos la uri resultado nueva con el valor de padre inicializado a nuestra semilla
                        RAI.Crawler.Data.DataUri newUri = new Data.DataUri(uri.Groups["uri"].Value.Replace("&amp;", "&"), seed, null, null);
                        // Submit para la base de datos
                        this._context.DataUri.InsertOnSubmit(newUri);
                    }
                    // Extraer siguiente página de resultados
                    Match next = GoogleCrawler._nextRegex.Match(content);
                    // Si encuentra siguiente pagina aumentamos el contador de paginas en 1 y sustituimos uriPaginacion con la nueva
                    if (next.Success)
                    {
                        uriPaginacion = new Uri(uriPaginacion, next.Groups["uri"].Value.Replace("&amp;", "&"));
                    }
                    // Si no uriPaginacion toma valor null
                    else
                    {
                        uriPaginacion = null; // No hay más resultados
                    }
                }

                //Si todo es correcto
                return(true);
            }
            catch {
            }

            //Si se produce alguna excepcion en el try, error
            return(false);
        }
Beispiel #3
0
        /// <summary>
        /// Añade una nueva semilla a la base de datos.
        /// </summary>
        /// <param name="uriString">La Uri de la semilla.</param>
        public void AddSeed(string uriString)
        {
            Uri uri = null;

            if (Uri.TryCreate(uriString, UriKind.Absolute, out uri))
            {
                // Crear DataUri e insertar en la base de datos
                RAI.Crawler.Data.DataUri newUri = new Data.DataUri(uri.AbsoluteUri, null, null, null);
                this._context.DataUri.InsertOnSubmit(newUri);
                try{
                    // Submit para la base de datos
                    this._context.SubmitChanges();
                }
                catch { }
            }
            else
            {
                // La Uri proporcionada no está bien formada
            }
        }
 partial void DeleteDataUri(DataUri instance);
 partial void UpdateDataUri(DataUri instance);
 partial void InsertDataUri(DataUri instance);
 private void detach_DataUri1(DataUri entity)
 {
     this.SendPropertyChanging();
     entity.ParentUri = null;
 }
 private void attach_DataUri1(DataUri entity)
 {
     this.SendPropertyChanging();
     entity.ParentUri = this;
 }