質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Q&A

0回答

1272閲覧

スレイピングでエラーが出ます。。

python_2019

総合スコア68

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

0グッド

0クリップ

投稿2021/02/09 05:12

以下のコードを実行すると、
「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?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2021/02/09 08:08

エラーメッセージの通りなのですが、どの点がわからないのでしょうか?正常にできた場合と、できない場合でエラーとなっている箇所にどのような違いがあるのか確認してみてはいかがでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問