【发布时间】:2016-06-28 14:34:04
【问题描述】:
我正在实现一个网络爬虫,我正在尝试解析 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]
但有时,网站 url 是 http://foo.com/bar/baz,而在 HTML 中,有类似 <a href='/bar/qux' 的东西。目标网址应该是http://foo.com/bar/qux,但我的代码输出的是http://foo.com/bar//bar/qux。
有没有人知道一种通用的方法来确定两个 URL 之间的哪些部分匹配,以便从相对路径中找出完整路径是什么?
【问题讨论】:
标签: python html beautifulsoup python-requests