Sida 1 av 1
kolla döda länkar i java
Postat: 08 jun 2011, 11:16
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

)
Re: kolla döda länkar i java
Postat: 08 jun 2011, 12:49
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.
Re: kolla döda länkar i java
Postat: 09 jun 2011, 18:22
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?
Re: kolla döda länkar i java
Postat: 09 jun 2011, 20:33
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..
Re: kolla döda länkar i java
Postat: 10 jun 2011, 00:41
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.
Re: kolla döda länkar i java
Postat: 10 jun 2011, 01:31
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?
Re: kolla döda länkar i java
Postat: 11 jun 2011, 21:30
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.
Re: kolla döda länkar i java
Postat: 11 jun 2011, 22:14
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
