diff options
author | Joris Guyonvarch | 2015-04-11 11:50:48 +0200 |
---|---|---|
committer | Joris Guyonvarch | 2015-04-11 12:03:22 +0200 |
commit | 5977e1454d7738ddb086d37b20337e350e380790 (patch) | |
tree | e03261144e3d534434242c1dd037c2a4e4db5a9f /src/Parser/Resume.hs | |
download | ad-listener-5977e1454d7738ddb086d37b20337e350e380790.tar.gz ad-listener-5977e1454d7738ddb086d37b20337e350e380790.tar.bz2 ad-listener-5977e1454d7738ddb086d37b20337e350e380790.zip |
Fetch first page ads of a given leboncoin url, fetch also the description page of each item.
Diffstat (limited to 'src/Parser/Resume.hs')
-rw-r--r-- | src/Parser/Resume.hs | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/Parser/Resume.hs b/src/Parser/Resume.hs new file mode 100644 index 0000000..bd73912 --- /dev/null +++ b/src/Parser/Resume.hs @@ -0,0 +1,27 @@ +module Parser.Resume + ( parseResumes + ) where + +import Data.Maybe (catMaybes) + +import Text.HTML.TagSoup + +import Model.Resume + +import Parser.Utils + +parseResumes :: String -> [Resume] +parseResumes page = + case sections (~== "<div class=list-lbc>") (parseTags page) of + [] -> + [] + sectionTags : _ -> + let lbcTags = takeWhile (~/= "<div id=alertesCartouche>") sectionTags + in catMaybes . fmap parseResume $ partitions (~== "<a>") lbcTags + +parseResume :: [Tag String] -> Maybe Resume +parseResume item = do + name <- getTagText "<h2 class=title>" item + let price = getTagText "<div class=price>" item + url <- getTagAttribute "<a>" "href" item + return Resume { name = name, price = price, url = url } |