2

PythonでWebページをクロールしたいのですが、問題は相対パスにあります。Webページの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
...
4

2 に答える 2

4

これに使用することを検討することをお勧めしますurlparse.urljoin()

「ベースURL」(base)と別のURL(url)を組み合わせて、完全な(「絶対」)URLを作成します。非公式には、これはベースURLのコンポーネント、特にアドレス指定スキーム、ネットワークロケーション、およびパス(の一部)を使用して、相対URLに欠落しているコンポーネントを提供します。

于 2012-05-16T19:32:24.730 に答える
3

from urlparse import urlparse

次に、それぞれの部分に解析します。

于 2012-05-16T19:31:44.443 に答える