エラーメッセージの通りなのですが、どの点がわからないのでしょうか?正常にできた場合と、できない場合でエラーとなっている箇所にどのような違いがあるのか確認してみてはいかがでしょうか。
以下のコードを実行すると、
「MissingSchema: Invalid URL・・・」というエラーが発生します。
なぜでしょうか??
ちなみに、download_site_imgsで指定してるURLを別のサイト(https://algorithm.joho.info/)にすると、正常に動作する場合もあります。(今回エラーは、googleで画像検索したURLです)
よろしくお願いいたします。
# -*- coding: utf-8 -*- import requests from bs4 import BeautifulSoup import os import sys def download_site_imgs(url, path): img_urls = [] # パス(保存先)が存在しなければ新規作成 if not os.path.exists(path): os.makedirs(path) # htmlのパース soup = BeautifulSoup(requests.get(url).content,'lxml') # 画像リンクなら(拡張子がjpgなど)リストに追加 for img_url in soup.find_all("img"): # imgタグのsrc要素を抽出 src = img_url.get("src") #src要素に画像の拡張子が含まれていたらリストに追加 if 'jpg' in src: img_urls.append(src) elif 'png' in src: img_urls.append(src) elif 'gif' in src: img_urls.append(src) # 画像リンク先のデータをダウンロード for img_url in img_urls: re = requests.get(img_url) print('Download:', img_url) with open(path + img_url.split('/')[-1], 'wb') as f: # imgフォルダに格納 f.write(re.content) if __name__ == '__main__': download_site_imgs('https://www.google.com/search?q=%E7%8A%AC&rlz=1C1CHBD_jaJP855JP855&sxsrf=ALeKk02Wa-O90EGosqW10H7qDSHsxLPeuQ:1612774284283&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjm48Sy9NnuAhUFEqYKHdB2BmwQ_AUoAXoECBEQAw&biw=1095&bih=945', 'img/')
以下、エラーメッセージ
--------------------------------------------------------------------------- MissingSchema Traceback (most recent call last) <ipython-input-1-dd28cc3b26ee> in <module> 36 37 if __name__ == '__main__': ---> 38 download_site_imgs('https://www.google.com/search?q=%E7%8A%AC&rlz=1C1CHBD_jaJP855JP855&sxsrf=ALeKk02Wa-O90EGosqW10H7qDSHsxLPeuQ:1612774284283&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjm48Sy9NnuAhUFEqYKHdB2BmwQ_AUoAXoECBEQAw&biw=1095&bih=945', 'img/') <ipython-input-1-dd28cc3b26ee> in download_site_imgs(url, path) 29 # 画像リンク先のデータをダウンロード 30 for img_url in img_urls: ---> 31 re = requests.get(img_url) 32 print('Download:', img_url) 33 with open(path + img_url.split('/')[-1], 'wb') as f: # imgフォルダに格納 C:\python\anaconda\pgm\lib\site-packages\requests\api.py in get(url, params, **kwargs) 73 74 kwargs.setdefault('allow_redirects', True) ---> 75 return request('get', url, params=params, **kwargs) 76 77 C:\python\anaconda\pgm\lib\site-packages\requests\api.py in request(method, url, **kwargs) 58 # cases, and look like a memory leak in others. 59 with sessions.Session() as session: ---> 60 return session.request(method=method, url=url, **kwargs) 61 62 C:\python\anaconda\pgm\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json) 517 hooks=hooks, 518 ) --> 519 prep = self.prepare_request(req) 520 521 proxies = proxies or {} C:\python\anaconda\pgm\lib\site-packages\requests\sessions.py in prepare_request(self, request) 460 auth=merge_setting(auth, self.auth), 461 cookies=merged_cookies, --> 462 hooks=merge_hooks(request.hooks, self.hooks), 463 ) 464 return p C:\python\anaconda\pgm\lib\site-packages\requests\models.py in prepare(self, method, url, headers, files, data, params, auth, cookies, hooks, json) 311 312 self.prepare_method(method) --> 313 self.prepare_url(url, params) 314 self.prepare_headers(headers) 315 self.prepare_cookies(cookies) C:\python\anaconda\pgm\lib\site-packages\requests\models.py in prepare_url(self, url, params) 385 error = error.format(to_native_string(url, 'utf8')) 386 --> 387 raise MissingSchema(error) 388 389 if not host: MissingSchema: Invalid URL '/images/branding/searchlogo/1x/googlelogo_desk_heirloom_color_150x55dp.gif': No schema supplied. Perhaps you meant http:///images/branding/searchlogo/1x/googlelogo_desk_heirloom_color_150x55dp.gif?
あなたの回答
tips
プレビュー