我正在实施网络抓取工具,我正在尝试解析HTML中的链接。我可以按照完整的网站路径,但一些相对路径有点奇怪。
我可以遵循完整路径,即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
。
有没有人知道找出两个网址之间匹配的一般方法,以便找出相对路径的完整路径是什么?
答案 0 :(得分:1)
到目前为止,我一直在做的并且对我有用的是使用当前页面网址调用urljoin()
:
>>> from urlparse import urljoin
>>> urljoin("http://foo.com/bar/baz", "/bar/qux")
'http://foo.com/bar/qux'