kolla döda länkar i java

Här diskuteras programmering och utveckling
Jalle_88
Inlägg: 104
Blev medlem: 28 jun 2010, 18:50
OS: Ubuntu

kolla döda länkar i java

Inlägg av Jalle_88 »

Jag försöker skriva en liten webläsare i java till en grundkurs i programmering.

Jag vill kolla vilka länkar på en sida som är döda. Jag har hittat en del kod på nätet som skall göra detta, och jag har fått det att funka så länge länkarna är på formen href=www.blabla.com eller på formen href=/merblabla (om man redan befinner sig på sidan ww.blabla.com och länken man vill åt är www.blabla.com/merblabla)

Problemet är när länkarna pekar på en katalog på servern, där det inte bara är att lägga på någonting på adressen man redan är på. För att exemplifiera:

på sidan www.csc.kth.se så har länken som tar en till kths startsida href=/.

Då funkar min kod inte alls. Hur skall man göra för att göra om den länken till en full url?

Hoppas det inte blev för otydligt...

All kod finns på:
http://www.f.kth.se/~jjalap/prutt/7lab/6lab/

Det är metoden isLive i klassen Link_reader som inte funkar.

(jag är medveten om att koden ser förfärlig ut, och att jag vägrar använda kamelcase, men det är lite så jag jobbar :))
revoltism
Inlägg: 612
Blev medlem: 20 jan 2008, 15:30
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: kolla döda länkar i java

Inlägg av revoltism »

Har ingen som helst koll på Java men vad använder du för regex? Borde inte en där endast "href" används funka bättre? Att den läser in alla strängar som innehåller "href" och omvandlar dem till det du villa ha.. alltså tar bort symboliska tecken som "=" och "/" och sen kör du den modifierade strängen istället..

Förresten.. varför java? Hade för mig att det är ett "dåligt" språk.
|- Grafikkort: ATI Radeon X1950 Pro - Moderkort: Asus P5W DH Deluxe - Skärm: LG L225W - Tangentbord: Logitech DiNovo Edge - Mus: Logithech MX Revolution -|
Jalle_88
Inlägg: 104
Blev medlem: 28 jun 2010, 18:50
OS: Ubuntu

Re: kolla döda länkar i java

Inlägg av Jalle_88 »

Jag avskyr java, men kursen råkar vara i java. Dessutom trodde jag att det var det som gällde om man ville ha ett jobb någon gång?

Hur som helst, problemet är att min metod för att kolla länkar tar en sträng som argument, och den strängen skall vara em hel url, alltså http://www... osv.

På vissa sidor funkar det bra, men på andra funkar det knappt alls. Tex på www.csc.kth.se så finns det en länk med href=/ som leder till www.kth.se. Jag gissar (jag har inte så mycket koll på det här med datorer egentligen) att det betyder att www.csc.kth.se är en underkatalog på kth:s server, och att startsidan ligger på roten... i något filsystem...

hade sidan bara hetat www.kth.se/csc så hade det inte varit några problem, men hur vet man att href=/ skall tolkas som href=http://www.kth.se på just den här sidan?
revoltism
Inlägg: 612
Blev medlem: 20 jan 2008, 15:30
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: kolla döda länkar i java

Inlägg av revoltism »

Ahh.. nu fattar jag. Länken du vill kontrollera saknar den inledande "http://...." och startar med "/..." istället. Vet inte hur du satt upp koden och hur den funkar men tror du inte kommer undan en if-then-else här. IF länk = "http://" THEN; gör så här ELSE använd det här... Antar att du redan satt upp en sån. Du har säkert en variabel för att följa olika länkar? Annars får du sätta upp en där senaste hemsideadressen läses in. Någonstans i for-slingan måste den riktiga hemsideadressen läsas in..
|- Grafikkort: ATI Radeon X1950 Pro - Moderkort: Asus P5W DH Deluxe - Skärm: LG L225W - Tangentbord: Logitech DiNovo Edge - Mus: Logithech MX Revolution -|
Jalle_88
Inlägg: 104
Blev medlem: 28 jun 2010, 18:50
OS: Ubuntu

Re: kolla döda länkar i java

Inlägg av Jalle_88 »

nja, det har jag också tänkt på :)
Som det ser ut nu så klarar jag om jag är på sidan http://www.ex.se länkar av typen href=/exempelkatalog. Då har jag som du föreslog en if-sats som, om link börjar med "/" gör
link=current_page+link, där current_page är sidan jag är på.

Problemet i exemplet ovan är inte att länken börjar med "/", utan att "/" är hela länken. Det står alltså bara href=/. Det är allt. I just det här fallet leder den länken till http://www.kth.se. Men hur skall man kunna veta vart den går?

Ett alternativ vore väl kanske att simulera klickningar på alla länkar och kolla om det ger ett fel, men det känns lite avancerat för mig... fast man vet ju aldrig, java har ju några metoder i biblioteket.
revoltism
Inlägg: 612
Blev medlem: 20 jan 2008, 15:30
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: kolla döda länkar i java

Inlägg av revoltism »

Jag kollade in sidans källkod och inser ditt problem.. I regel brukar "/" betyda root på ett linux system som du påpekade ovan. I det här fallet så betyder det säkert root i www-katalogen. Och med all säkerhet så kör de nog på en linuxserver. Jag har inte sett denna lösning tidigare men då var det ett tag sedan jag kodade html.

Det är en vild gissning men jag tror att oavsett var du är på webbplatsen så kommer du till root.. i.e. startsidan. Så borde det vara på alla som har en liknande lösning. "cd /" tar dig alltid till root på ett linuxsystem. Så även om det inte är en "riktig" lösning så kan du delvist fixa problemet. Då du inte känner till den underliggande filsystemsstrukturen vet jag inte om det finns så mycket annat till vals. Jag har då ingen aning om det..

Alternativet är väl att ge en varning i stället för att säga att länken inte funkar.

Jag kom på att det kan finnas "../../" länkar också.. fixar du en sån eller har du samma problem där?
|- Grafikkort: ATI Radeon X1950 Pro - Moderkort: Asus P5W DH Deluxe - Skärm: LG L225W - Tangentbord: Logitech DiNovo Edge - Mus: Logithech MX Revolution -|
Jalle_88
Inlägg: 104
Blev medlem: 28 jun 2010, 18:50
OS: Ubuntu

Re: kolla döda länkar i java

Inlägg av Jalle_88 »

tack för alla svar! Jag ville bara säga att nu har jag sommarlov, så jag kommer nog inte jobba på det här något mer den här terminen (om jag inte blir väldigt uttråkad).

Dessutom så verkar det inte spela någon roll längre, då www.csc.kth.se nu går till www.kth.se/csc. vilket betyder att min kod kanske funkar, lagom till att sista redovisningstillfället är passerat. Håhå jaja

Men tack så hemskt mycket för alla förslag i alla fall, och jag kommer återkomma med fler frågor i höst, och då blir det C, så det blir väl förhoppningsvis lite roligare.
revoltism
Inlägg: 612
Blev medlem: 20 jan 2008, 15:30
OS: Arch Linux
Utgåva: Vet inte/ingen utgåva passar

Re: kolla döda länkar i java

Inlägg av revoltism »

Är bara ledsen jag inte kunde vara till mer hjälp. Gör lite hobby programering bara så är inte så tight och speciellt på ett språk jag inte testat tidigare. Hoppas du får en trevlig sommar ;)
|- Grafikkort: ATI Radeon X1950 Pro - Moderkort: Asus P5W DH Deluxe - Skärm: LG L225W - Tangentbord: Logitech DiNovo Edge - Mus: Logithech MX Revolution -|
Skriv svar

Återgå till "Programmering och webbdesign"