6
私はHaskellのHTMLファイルからデータを抽出する方法を学び、壁に衝突しました。私は実際にHaskellを経験したことはありません。私の以前の知識はPython(そしてHTML解析のためのBeatifulSoup)です。HaskellのTagSoupでタグを解析する
私はTagSoupを使用して自分のHTML(推奨されていると思われる)を見て、その仕組みが基本的な考え方を持っています。ここで問題になっている私のコードの基本的な部分は(自己完結型、およびテストのための情報を出力)です:
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)
しかし、私は、任意の「DIV」タグを取得するつもりはありませんよ。それを書いて、私が試した
TagOpen "div" [("id","scores-1997830"),("class","scoreBox spanCol2")]
TagOpen "div" [("id","scores-1997831"),("class","scoreBox spanCol2 lastCol")]
:私はこのような形式でタグの前にすべてをドロップしたい
let tags = dropWhile (~/= TagOpen "div" [("id", "scores-[0-9]+"), ("class", "scoreBox(spanCol[0-9]?)+(lastCol)?")]) (parseTags http)
をしかし、それは見つけようとするリテラル[0-9] +。私はまだText.Regex.Posixモジュールで回避策を見つけ出しておらず、エスケープしても機能しません。ここでの解決策は何ですか?
の線に沿って、整合自分自身、何かを記述する必要があります[0-9] + 「? –
ありがとう、みんな!両方とも動作します。私はどちらが「より良い」かはわかりませんが、できるだけ多くのコードを書きたいので(心配しないで)、私はちょうどKoterpillarの方法です。本当にありがとう! – simonsays