1
我正在實現一個網絡爬蟲,我試圖解析HTML中的鏈接。我可以遵循完整的網站路徑,但一些相對路徑有點奇怪。如何使用BeautifulSoup從相關網站路徑獲取完整的網站路徑
我可以按照完整路徑,即http://foo.com/bar/baz
,我能找到一種方法,通過使用以下功能遵循相對路徑,即/qux
:
def baseUrl(url):
u = urlparse.urlparse(url)
return "{}://{}{}/".format(u.scheme, u.netloc, '/'.join(u.path.split('/')[:-1]))
def fullUrl(url, parent):
u = urlparse.urlparse(url)
if u.scheme:
return url.split("/#")[0]
else:
return "{}{}".format(baseUrl(parent), url).split("/#")[0]
但有時,網站的網址是http://foo.com/bar/baz
,和在HTML中,有一些像<a href='/bar/qux'
。目標網址應該是http://foo.com/bar/qux
,但我的代碼是輸出http://foo.com/bar//bar/qux
。
有沒有人知道一個通用的方法來弄清楚兩個URL之間的哪些部分匹配,以便找出完整路徑將來自相對路徑?
這正是我需要的。謝謝! – Brian
我有另一個(相關)問題。有時候,當我爬行的時候,我去的URL會是'http:// foo.com/bar',然後重定向到'http:// foo.com/bar /'。由於重定向,它會查找不正確的相對路徑。你知道我該如何解決這個問題嗎? 再次感謝您! – Brian
@布賴恩快速和骯髒的修復將使用'url.rstrip(「/」)',但請確保它不會破壞其他用例。謝謝。 – alecxe