www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

micha

Gepostet:
24.02.2010 20:00

Curl  
Hi zusammen,

ich probiere eine Website via Curl auszulesen, habe aber bislang leider keine Erfolge verbuchen können :-/ .. ist auch ziemlich neu für mich, sorry.
Könnte vielleicht jemand drei-vier Zeilen Code posten?

Viele Grüße
Micha
Zum Seitenanfang    
 
Siracusa

Gepostet:
25.02.2010 21:25

   
Hallo,

ich hab's nicht getestet, aber so in der Art sollte ein einfaches GET aussehen:

main :: IO ()
main = do
(res, content) <- curlGetString "http://www.google.de" []
case res of
CurlOK -> putStrLn ("OK\n" ++ content)
err -> putStrLn ("Fehler: " ++ show err)

An welcher Stelle hakt es bei dir denn?


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
micha

Gepostet:
01.03.2010 13:58

   
Hi,

danke für die Antwort und gleichzeitig sorry für die lange Abwesenheit... ich habe gar nicht bekommen, dass du geantwortet hast :-/ Habe es in der Zwischenzeit hinbekommen und war total vertieft in die Lösungsfindung für das nächste Problem =)

Nachdem ich nun die Links ausgelesen habe, würde ich die gerne alle in eine Liste packen.. und da es ja keine Variablen im bekannten Sinne gibt, ist das schon eine Hürde ^^ Ich Die Links werden zwar in die Liste gepackt, aber ich bekomme irgendwann eine Exception. Hier mal der Code. Vielleicht kannst du ja was damit anfangen... allein schon, dass ich die Links von Hand parse finde ich nicht wirklich gelungen ^^


naechsterlink reststring n = if (take 9 reststring) == "<a href=\"" && (take 1 (drop 9 reststring)) /= "#" && (take 6 (drop 9 reststring)) /= "mailto"
then do let tempstring = drop 9 reststring -- das Ende des Link-Tags suchen
if (take 1 (drop (n-1) tempstring)) == "\"" -- wenn das Ende erreicht ist
then do let prelink = (take (n-1) tempstring) -- link so festhalten
(prelink, (drop (length prelink) tempstring))
else naechsterlink reststring (n+1) -- wenn Ende nicht erreicht ist, ein Zeichen weiter rechts suchen
else naechsterlink (tail reststring) 1

erstelleliste quellcode liste = do putStrLn $ "Neu: " ++ (take 100 quellcode ) ++ " " ++ (take 100 liste)
let a = naechsterlink quellcode 1
putStrLn (take 1 a)
let link = fst a
putStrLn $ "Link: " ++ link
let rest = snd a
putStrLn $ "Rest: " ++ (take 100 rest)
erstelleliste rest []


Viele Grüße
Micha
Zum Seitenanfang    
 
micha

Gepostet:
01.03.2010 22:35

   
Hat sich erledigt :)

Ich habe das Ganze nochmal ein bisschen überarbeitet und nun funktioniert's auch wie es soll.

Viele Grüße
Micha
Zum Seitenanfang    
 
Siracusa

Gepostet:
02.03.2010 05:00

   
Vielleicht kannst du ja was damit anfangen... allein schon, dass ich die Links von Hand parse finde ich nicht wirklich gelungen ^^
Ja, da wäre ein regulärer Ausdruck besser geeignet. Denn schon ein Leerzeichen zuviel im String zerschießt dir die ganze Funktion. ;-)


Viele Grüße,

Siracusa
Zum Seitenanfang