2017-05-16 8 views
1

Ich versuche, alle href die von einem HTML-Code zu erhalten und speichern sie in einer Liste für die zukünftige Verarbeitung wie folgt aus:Scrap die absolute URL anstelle eines relativen Pfad in Python

Beispiel URL: www.example -page-xl.com

<body> 
    <section> 
    <a href="/helloworld/index.php"> Hello World </a> 
    </section> 
</body> 

ich den folgenden Code bin mit der href der zur Liste:

import bs4 as bs4 
import urllib.request 

sauce = urllib.request.urlopen('https:www.example-page-xl.com').read() 
soup = bs.BeautifulSoup(sauce,'lxml') 

section = soup.section 

for url in section.find_all('a'): 
    print(url.get('href')) 

Allerdings würde ich mag die URL speichern, wie: ww w.example-page-xl.com/helloworld/index.php und nicht nur der relative Pfad der /helloworld/index.php ist

Anfügen/Beitritt der URL mit dem relativen Pfad ist nicht erforderlich seit der dynamischen Links können variieren, wenn ich der URL und dem relativen Pfad beitrete.

In aller Kürze möchte ich die absolute URL und nicht relative Pfade allein Schrott (und ohne Eintritt)

Antwort

2

In diesem Fall urlparse.urljoin Ihnen hilft. Sie sollten Ihren Code wie this-

import bs4 as bs4 
    import urllib.request 
    from urlparse import urljoin 

    web_url = 'https:www.example-page-xl.com' 
    sauce = urllib.request.urlopen(web_url).read() 
    soup = bs.BeautifulSoup(sauce,'lxml') 

    section = soup.section 

    for url in section.find_all('a'): 
     print urljoin(web_url,url.get('href')) 

hier urljoin verwalten absolute und relative Pfade ändern.

2

urllib.parse.urljoin() könnte helfen. Es macht einen Join, aber es ist schlau und behandelt sowohl relative als auch absolute Pfade. Beachten Sie, dass dies Python 3-Code ist.

>>> import urllib.parse 
>>> base = 'https://www.example-page-xl.com' 

>>> urllib.parse.urljoin(base, '/helloworld/index.php') 
'https://www.example-page-xl.com/helloworld/index.php' 

>>> urllib.parse.urljoin(base, 'https://www.example-page-xl.com/helloworld/index.php') 
'https://www.example-page-xl.com/helloworld/index.php' 
Verwandte Themen