2016-06-18 14 views
1

Ich versuche, einen Crawler zu machen, der zur Webseite geht und alle Bilder herunterlädt, die auf dieser Seite verfügbar sind. Mein Code sieht wie folgt ausWie bekomme ich die vollständige Verknüpfung eines Bildes mit Python?

import random 
import urllib.request 
import requests 
from bs4 import BeautifulSoup 

def get_images(url): 
    code = requests.get(url) 
    text = code.text 
    soup = BeautifulSoup(text) 
    for img in soup.findAll('img'): 
     src = img.get('src') 
     download_image(src) 


def download_image(url): 
    name = random.randrange(1, 100) 
    image_name = str(name) + ".jpg" 
    urllib.request.urlretrieve(url, image_name) 

get_images("http://www.any_url.com/") 

Jetzt werden viele Bilder in der Regel nicht ihre volle URL enthalten in ihrem src-Tag. Nun, meine Frage ist, wie kann ich die volle URL der Bilder bekommen, damit ich sie herunterladen kann?

Antwort

1

vollständige URL des Bildes ist Hostnamen Ihrer Webseite + relativer Pfad in src-Tag.

zB

URL Ihrer Webseite ist http://example.com/foo/bar.html

und Bild src-Tag: <img src="/image/smiley.png">,

dann absolute URL des Bildes wird http://example.com/image/smiley.png

Es ist einfach, diesen Vorgang auszuführen mit eingebauter Funktion urljoin():

from urllib.parse import urljoin 
webpage_url = 'http://example.com/foo/bar.html' 
src = '/folder/big/a.jpg' 
urljoin(webpage_url, src) 
Verwandte Themen