Haskell'de HTML dosyalarından veri nasıl çıkarılacağını öğrenmeye çalışıyorum ve duvara çarptı. Ben gerçekten Haskell ile hiç deneyimim yok ve önceki bilgilerim Python'dan (ve HTML ayrıştırma için BeatifulSoup).Haskell'de TagSoup ile ayrıştırma etiketleri
HTML'ime bakmak için TagSoup kullanıyorum (önerilen gibi görünüyor) ve nasıl çalıştığına dair temel bir fikrim var. İşte (kendi kendine yeten ve test için bilgi verir) Söz konusu benim kod temel segment: Ancak
import System.IO
import Network.HTTP
import Text.HTML.TagSoup
import Data.List
main :: IO()
main = do
http <- simpleHTTP (getRequest "http://www.cbssports.com/nba/scoreboard/20130310") >>= getResponseBody
let tags = dropWhile (~/= TagOpen "div" []) (parseTags http)
done tags where
done xs = case xs of
[] -> putStrLn $ "\n"
_ -> do
putStrLn $ show $ head xs
done (tail xs)
, ben herhangi bir "div" etiketi almaya çalışmıyorum. bunu yazarken denedim
TagOpen "div" [("id","scores-1997830"),("class","scoreBox spanCol2")]
TagOpen "div" [("id","scores-1997831"),("class","scoreBox spanCol2 lastCol")]
: Böyle bir formatta bir etikete öncesinde her şeyi bırakıp istiyorum
let tags = dropWhile (~/= TagOpen "div" [("id", "scores-[0-9]+"), ("class", "scoreBox(spanCol[0-9]?)+(lastCol)?")]) (parseTags http)
Ama sonra bulmaya çalışır edebi [0-9] +. Henüz Text.Regex.Posix modülü ile bir çözüm buldum ve karakterleri kaçmak çalışmıyor. Buradaki çözüm nedir?
çizgisinde bir eşleyici kendiniz bir şeyler yazmak zorunda kalacak [0-9] + "'? –
Teşekkürler beyler! Her ikisi de bu iş. Hangisinin "daha iyi" olduğundan emin değilim, fakat mümkün olduğunca fazla kod yazmak istediğimden (öğrenme amaçlı, endişelenme), sadece Kotergals'ın yöntemini şimdilik yapacağım. Çok teşekkürler! – simonsays