当URL包含方括号时,HandsomeSoup URL获取问题

时间:2014-03-11 06:29:02

标签: haskell hxt

当网址包含[]时,以下代码无效。有人可以告诉我如何逃避它吗?我尝试过对整个网址进行编码,但这并没有帮助。

import qualified Data.ByteString.Char8 as B
import Network.HTTP.Types.URI
import Text.HandsomeSoup
import Text.XML.HXT.Core

main = do
    -- This URL works (no [])
    let url = "http://www.google.com/search?q=3%2F10%2F14&test0=hello"
    --let urlEnc = B.unpack $ urlEncode True $ B.pack url
    doc <- fromUrl url
    links <- runX $ doc >>> css "a" ! "href"
    mapM_ putStrLn links

如果我将URL更改为下面(注意[0]),它将不起作用。

    let url = "http://www.google.com/search?q=3%2F10%2F14&test[0]=hello"

通过工作,我的意思是当没有[]时我看到一个链接列表但是当URL中有ghci时我在[]内没有任何内容(转到提示) 。如果你复制第二个URL并将其粘贴到你的浏览器中,它可以正常工作。

我举起这个例子来说明[]的问题。当然,它不是Google或其他任何人提供的有效网址。

GHC:7.6.2,Mac OS X(Mavericks)

谢谢!

1 个答案:

答案 0 :(得分:2)

我认为urlEncode[]没有任何效果,因为它不应该,它们一般不会特别。

然而,您可以使用%5B%5Dsource)对其进行编码,因此另一种方法是在您的网址中手动替换[]