繁体   English   中英

管道中的IO操作?

[英]IO Operations in Conduit?

这可能是一个非常晦涩的案例,但请耐心等待。

我正在编写一个网络爬虫,需要下载网页并将其保存到本地磁盘。 同时,作为爬虫,它需要在每个页面上找到超链接并下载那些链接的页面。

现在,我正在看此页面上给出的第一个示例代码。 我正在尝试编写这种类型的管道:

processLink :: Conduit S.ByteString IO S.ByteString

然后,我将在示例代码中替换此行:

responseBody res $$+- sinkFile "foo.txt"

用这一行:

responseBody res $= processLinks $$+ sinkFile

因此,我想做的是实现一个称为processLink的管道,该管道处理ByteString,从中提取链接,然后将原始ByteString传递给sinkFile,以便可以保存页面。 然后,我可以递归地调用那些链接上的函数以下载那些链接的页面。

但是,由于processLink是一个纯函数,似乎我无法在processLink内执行任何IO操作,因此无法完成我需要的操作,例如下载那些链接的页面。 可以吗 我该怎么办才能解决这个问题?

好吧,我知道了...。我想我需要的只是liftIO大声笑。 抱歉,我是Haskell的新手:P

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM