Python相對完美的URL拼接函數


 

首先說下什么叫URL拼接,我們有這么一個HTML片段:

做為一只辛苦的爬蟲,我們要跟蹤到這個click me指向的頁面,假設這個片段來自:http://www.xxxdu.com,那么目標頁面是什么呢?

顯然不是

而是

第一個結果看着很腦殘,但是這就是Python的urljoin給出的結果,按理說urljoin應該解決這個“路徑非正規化”(Normalize path )的問題,但是它沒有:

OK,其實這個問題的解決根本不再URL上,因為URL已經拼接了,更准確的描述這個問題應該是路徑的正規化,即xxx.com后面的這部分路徑,如果我們把它想象成Unix路徑,不就是求相對論路徑”/../../a.html”的絕對路徑么?

我們可以用查找、正則表達式把后面這部分分離出來,更省事的方法是urlparse:

上述結果的第2部分, arr[2]就是我們要的path啦。

然后Python提供了Unix路徑的正規化函數posixpath.normpath

最后我們把正規化好的path重新組裝成url,於是整個函數出爐:

輸出結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM