我使用Haskell的Scalpel library作为Haskell中网络抓取的介绍。我可以调用一个函数scrapeURL
,它允许我抓取一个页面并将其输出到IO,但是我找不到一个只允许我简单地返回调用输出的函数。
import Text.HTML.Scalpel
data WikiImg
= Src String
deriving (Show, Eq)
...
rembrantImagesIO :: IO (Maybe [WikiImg])
rembrantImagesIO = scrapeURL "https://en.wikipedia.org/wiki/Rembrandt" wikimgs
rembrantImages :: Maybe [WikiImg]
rembrantImages = scrapeStringLike "https://en.wikipedia.org/wiki/Rembrandt" wikimgs
wikimgs :: Scraper String [WikiImg]
wikimgs = chroots ("div" @: [hasClass "thumbinner"]) wikimg
where
wikimg :: Scraper String WikiImg
wikimg = do
src <- attr "src" $ "img"
return $ Src src
rembrantImagesIO
将输出img src的列表
Just [Src "//upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Rembrandt_-_Rembrandt_and_Saski...
...但rembrantImages
似乎失败了。
Just []
如何简单地返回实际返回的Maybe [WikiImg]
?
(旁注:我对StackOverflow关于Scalpel的看法很少......如果您对Haskell中的网络抓取有经验,请告诉我是否有更好的起点。)