2016-06-18 7 views
1

私はウェブページに行き、そのページで利用可能なすべてのイメージをダウンロードするクローラを作ろうとしています。私のコードは、今では多くの画像は、通常、そのsrcタグで彼らの完全なURLが含まれていないこの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/") 

のように見えます。今、私の質問は、私はそれらをダウンロードできるように私は画像の完全なURLを取得することができますか?

答えて

1

画像のフルURLはウェブページのホスト名 + srcタグの相対パスです。

例えば

あなたのウェブページのURLはhttp://example.com/foo/bar.html

および画像のsrcタグがされている:<img src="/image/smiley.png">は、あなたのイメージの

絶対URLは次のようになりますhttp://example.com/image/smiley.png

この操作を実行するのは簡単です組み込み関数を使用してurljoin()

from urllib.parse import urljoin 
webpage_url = 'http://example.com/foo/bar.html' 
src = '/folder/big/a.jpg' 
urljoin(webpage_url, src) 
関連する問題