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

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

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

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

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1199閲覧

【Pythonスクレイピング】Invalid URL 'None': No scheme supplied. Perhaps you meant http://None?の意味がわからない

loulou098

総合スコア15

スクレイピング

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

JupyterLab

JupyterLabは、Jupyter notebookの後継の対話型開発環境(IDE)です。データの可視化がインタラクティブで、プラグイン作成により新しいコンポーネントの追加および既存のコンポーネントも統合可能。サーバに閉じているため、データ分析に向いています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/03/17 22:21

編集2023/03/18 22:23

実現したいこと

JupyterLab上でこのページで織田信長、伊達政宗、長宗我部元親の三人の画像をファイルに保存するというコードを書きたいです。その際、以下のエラーが出てきましたが、このエラーの意味がわかりませんでした。https://www.google.co.jpというドメインが足りないのでしょうか?

Invalid URL 'None': No scheme supplied. Perhaps you meant http://None?

質問

どのようにしたら、このエラーを解消することができますか?指針だけでも大変参考になりますので、どなたかご教授いただけると幸いです。

発生している問題・エラーメッセージ

--------------------------------------------------------------------------- MissingSchema Traceback (most recent call last) /var/folders/jr/2p724fh51wv7fxmql7kxyb1h0000gn/T/ipykernel_50717/4166086079.py in <module> 20 print(i, shogun_images_url) 21 ---> 22 Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content)) 23 Img.save(f'img/{i}.jpg') 24 ~/opt/anaconda3/lib/python3.9/site-packages/requests/api.py in get(url, params, **kwargs) 71 """ 72 ---> 73 return request("get", url, params=params, **kwargs) 74 75 ~/opt/anaconda3/lib/python3.9/site-packages/requests/api.py in request(method, url, **kwargs) 57 # cases, and look like a memory leak in others. 58 with sessions.Session() as session: ---> 59 return session.request(method=method, url=url, **kwargs) 60 61 ~/opt/anaconda3/lib/python3.9/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) 571 hooks=hooks, 572 ) --> 573 prep = self.prepare_request(req) 574 575 proxies = proxies or {} ~/opt/anaconda3/lib/python3.9/site-packages/requests/sessions.py in prepare_request(self, request) 482 483 p = PreparedRequest() --> 484 p.prepare( 485 method=request.method.upper(), 486 url=request.url, ~/opt/anaconda3/lib/python3.9/site-packages/requests/models.py in prepare(self, method, url, headers, files, data, params, auth, cookies, hooks, json) 366 367 self.prepare_method(method) --> 368 self.prepare_url(url, params) 369 self.prepare_headers(headers) 370 self.prepare_cookies(cookies) ~/opt/anaconda3/lib/python3.9/site-packages/requests/models.py in prepare_url(self, url, params) 437 438 if not scheme: --> 439 raise MissingSchema( 440 f"Invalid URL {url!r}: No scheme supplied. " 441 f"Perhaps you meant http://{url}?" MissingSchema: Invalid URL 'None': No scheme supplied. Perhaps you meant http://None?

該当のソースコード

Python

1import requests 2from bs4 import BeautifulSoup 3url=('https://ranking.goo.ne.jp/column/8616/') 4soup=BeautifulSoup(res.text,'html.parser') 5 6 7img_tag=soup.find_all('img')[19] 8img_tag_url=img_tag['src'] 9 10img_tag_date=soup.find_all('img')[18] 11img_tag_date_url=img_tag_date['src'] 12 13img_tag_chosokabe=soup.find_all('img')[17] 14img_tag_chosokabe_url=img_tag_chosokabe['src'] 15 16shogun_images_urls=img_tag_url, img_tag_date_url, img_tag_chosokabe_url 17 18from PIL import Image 19import io 20#3枚の画像を保存 21for i, shogun_images_url in enumerate(shogun_images_urls): 22 print(i, shogun_images_url) 23 24 Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content)) 25 Img.save(f'img/{i}.jpg')

調査したこと・試したこと

エラー(MissingSchema)の原因はimg_tag.get('shogun_images_urls')がNoneだからだと思います。

という回答者様からのアドバイスから

Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content))

を下記の様に書き換えました。

Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))

すると、以下のエラーが出ました。

--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) /var/folders/jr/2p724fh51wv7fxmql7kxyb1h0000gn/T/ipykernel_50717/81636433.py in <module> 25 Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content)) 26 # Img.save('img/sample.jpg') ---> 27 Img.save(f'img/{i}.jpg') 28 29 #エラー ~/opt/anaconda3/lib/python3.9/site-packages/PIL/Image.py in save(self, fp, format, **params) 2315 fp = builtins.open(filename, "r+b") 2316 else: -> 2317 fp = builtins.open(filename, "w+b") 2318 2319 try: FileNotFoundError: [Errno 2] No such file or directory: 'img/0.jpg'

img(このファイルは作成してあります)という名前のファイルに3枚の画像をimg/0.jpg、img/1.jpg、img/2.jpgの名前で保存したいのですが、img/0.jpgという名前のファイルに画像を保存するというコードになっているのだと思います。どのようにしたら、この問題を解決できるのでしょうか?

この疑問に対して

imgはファイルですか?ファイルなのかディレクトリなのか整理された方が良いかと思います。

img ディレクトリを作成しておくとよいかと。

という回答者様からの回答をいただき、

Python

1import os 2os.mkdir('./img_diretory')

を実行したところ
imgに
イメージ説明
img_directoryというディレクトリが作成されました。
イメージ説明

そして、

  • print(os.path.exists('img'))
  • print(os.path.isfile('img'))
  • print(os.path.isdir('img'))

この全ての操作を行ったところ、Falseという結果出てきました。つまり、

  • ファイルまたはディレクトリ(フォルダ)の存在確認: os.path.exists()
  • ファイルの存在確認: os.path.isfile()
  • ディレクトリ(フォルダ)の存在確認: os.path.isdir()

全てに当てはまらないことを意味するのだと思います。

この解決策がわからなかったので、とりあえず、新規のディレクトリを作成することにしてみました。

mkdir dir1

dir1というディレクトリ名のディレクトリを作成する操作を行ったところ、
イメージ説明
imgにdir1が作成されていました。つまりこれが意味することは、imgはディレクトリやファイルよりも大きな括りであり、ディレクトリやフォルダを作成するコードを作成した際に自動的にそこ(img)に入る存在であるということだと考えられます。

新たな疑問

  • ここでのimgはどのような存在ですか
  • imgに自動的にディレクトリやファイルが入る操作をやめるにはどうすれば良いでしょうか

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

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

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

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

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

meg_

2023/03/17 22:43

質問のコードは「NameError: name 'res' is not defined」が発生します。
meg_

2023/03/17 22:47

「NameError: name 'Image' is not defined」も発生するかと思います。
meg_

2023/03/18 00:36

> img(このファイルは作成してあります) imgはファイルですか?ファイルなのかディレクトリなのか整理された方が良いかと思います。
melian

2023/03/18 01:33

img ディレクトリを作成しておくとよいかと。
loulou098

2023/03/18 22:25 編集

迅速なご回答ありがとうございます! ```Python import os os.mkdir('./img_diretory') ``` を実行したところ imgに ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/ac02bf66-eb2c-48b4-9cd4-c2a0e8fd2d9c.png) img_directoryというディレクトリが作成されました。 ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/e6654ecc-8166-41a5-a41a-d4df8416f2be.png) そして、 - print(os.path.exists('img')) - print(os.path.isfile('img')) - print(os.path.isdir('img')) この全ての操作を行ったところ、Falseという結果出てきました。つまり、 - ファイルまたはディレクトリ(フォルダ)の存在確認: os.path.exists() - ファイルの存在確認: os.path.isfile() - ディレクトリ(フォルダ)の存在確認: os.path.isdir() 全てに当てはまらないことを意味するのだと思います。 この解決策がわからなかったので、とりあえず、新規のディレクトリを作成することにしてみました。 ``` mkdir dir1 ``` dir1というディレクトリ名のディレクトリを作成する操作を行ったところ、 ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/03d78708-c76b-4622-8fc9-cc835f91f3db.png) imgにdir1が作成されていました。つまりこれが意味することは、imgはディレクトリやファイルよりも大きな括りであり、ディレクトリやフォルダを作成するコードを作成した際に自動的にそこ(img)に入る存在であるということだと考えられます。 ### 新たな疑問 - ここでのimgはどのような存在ですか - imgに自動的にディレクトリやファイルが入る操作をやめるにはどうすれば良いでしょうか
guest

回答1

0

ベストアンサー

エラー(MissingSchema)の原因はimg_tag.get('shogun_images_urls')Noneだからだと思います。

Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content))

を下記の様に書き換えれば良いでしょう。

Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))

投稿2023/03/17 23:03

meg_

総合スコア10580

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

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

meg_

2023/03/19 02:42

質問の追記を読んだところ、カレントディレクトリが「img」のようですね。そうであれば、「Img.save(f'img/{i}.jpg')」は「Img.save(f'./{i}.jpg')」で良いかと思います。
loulou098

2023/03/19 22:04

ありがとうございます!しっかりとimgディレクトリに画像を保存することができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問