Avatar billede Syska Mester
03. august 2006 - 11:26 Der er 3 kommentarer og
1 løsning

Rippe et site for links, how?

Hej,

Jeg ved der findes mange tools til at rippe og downloade hele hjemmesider med .... men hvordan piller de alle links ud ... de kan jo være skrev på mange måder ....

Er det regex, eller andre tools, som kan detecte clickable ting på en hjemmeside eller hvordan?

Høre gerne fra folk som ved noget omkring det ....

// ouT
Avatar billede Slettet bruger
03. september 2006 - 07:40 #1
Der er en helt grundlæggende forudsætning som man gør når man skal lave sådan et værktøj og det er at kun links fra <a href="..."> anvendes

1) Til at finde på side - her kan du google dig til et regex.
2) selv om de er relative kan du let lave dem absolutte - du ved hvilket adresse du henter.

Bemærk, det giver ikke meget mening at forsøge at finde links på andre måder for at begynde at kigge på javescript navigation er helt i skoven.
Avatar billede nielle Nybegynder
03. september 2006 - 08:13 #2
Meget groft eksempel på hvordan det kan gøres:

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Text.RegularExpressions;

namespace e723908
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://www.eksperten.dk/spm/723908";
            string html = GetHtml(url);
            string[] links = GetLinks(html);

            foreach (string link in links)
                Console.WriteLine(link);
        }

        private static string GetHtml(string url)
        {
            HttpWebRequest request = (HttpWebRequest) WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse) request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            return sr.ReadToEnd();
        }

        private static Regex linkMatcher = new Regex(@"href=""(.+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase);

        private static string[] GetLinks(string html)
        {
            List<string> links = new List<string>();

            Match match = linkMatcher.Match(html);
            while (match.Success)
            {
                links.Add(match.Groups[1].Value);
                match = match.NextMatch();
            }

            return links.ToArray();
        }
    }
}
Avatar billede Syska Mester
06. december 2006 - 16:30 #3
smid svar
Avatar billede nielle Nybegynder
06. december 2006 - 22:27 #4
Svar :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester