【问题标题】:Making relative paths absolute in python在python中使相对路径成为绝对路径
【发布时间】:2012-05-16 19:29:22
【问题描述】:

我想用python爬取网页,问题出在相对路径上,我有以下函数对网页中的url进行规范化和去相关化,我无法实现一部分去相关化功能。有任何想法吗? :

def normalizeURL(url):
    if url.startswith('http')==False:
        url = "http://"+url
    if url.startswith('http://www.')==False:
        url = url[:7]+"www."+url[7:]
    return url

def deRelativizePath(url, path):
    url = normalizeURL(url)

    if path.startswith('http'):
        return path
    if path.startswith('/')==False:
        if url.endswith('/'):
            return url+path
        else:
            return url+"/"+path
    else:
        #this part is missing

问题是:我不知道如何获取主 url,它们可以有多种格式:

http://www.example.com
http://www.example.com/
http://www.sub.example.com
http://www.sub.example.com/
http://www.example.com/folder1/file1 #from this I should extract http://www.example.com/ then add path
...

【问题讨论】:

  • 作为旁注,我建议阅读 PEP8 以符合编码风格的最佳实践。 python.org/dev/peps/pep-0008
  • 太棒了,非常感谢你的编码风格

标签: python web-crawler web-scraping


【解决方案1】:

我建议您考虑为此使用urlparse.urljoin()

通过将“基本 URL”(base) 与另一个 URL (url) 组合来构造一个完整的(“绝对”)URL。非正式地,这使用基本 URL 的组件,特别是寻址方案、网络位置和(部分)路径,来提供相对 URL 中缺少的组件。

【讨论】:

    【解决方案2】:

    from urlparse import urlparse

    然后解析成各自的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 2012-01-11
      • 2010-09-15
      • 2013-04-17
      • 2012-01-31
      • 2017-08-01
      相关资源
      最近更新 更多