質問編集履歴

3

新たな操作を行ったところ、別の疑問が生じたので、それを記述した

2023/03/18 22:23

投稿

loulou098
loulou098

スコア15

test CHANGED
File without changes
test CHANGED
@@ -85,6 +85,8 @@
85
85
 
86
86
  shogun_images_urls=img_tag_url, img_tag_date_url, img_tag_chosokabe_url
87
87
 
88
+ from PIL import Image
89
+ import io
88
90
  #3枚の画像を保存
89
91
  for i, shogun_images_url in enumerate(shogun_images_urls):
90
92
  print(i, shogun_images_url)
@@ -110,12 +112,12 @@
110
112
  ```
111
113
  ---------------------------------------------------------------------------
112
114
  FileNotFoundError Traceback (most recent call last)
113
- /var/folders/jr/2p724fh51wv7fxmql7kxyb1h0000gn/T/ipykernel_50717/2061955084.py in <module>
115
+ /var/folders/jr/2p724fh51wv7fxmql7kxyb1h0000gn/T/ipykernel_50717/81636433.py in <module>
114
- 23 Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))
116
+ 25 Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))
115
- 24 # Img.save('img/sample.jpg')
117
+ 26 # Img.save('img/sample.jpg')
116
- ---> 25 Img.save(f'img/{i}.jpg')
118
+ ---> 27 Img.save(f'img/{i}.jpg')
117
- 26
119
+ 28
118
- 27 #エラー
120
+ 29 #エラー
119
121
 
120
122
  ~/opt/anaconda3/lib/python3.9/site-packages/PIL/Image.py in save(self, fp, format, **params)
121
123
  2315 fp = builtins.open(filename, "r+b")
@@ -129,3 +131,43 @@
129
131
 
130
132
  img(このファイルは作成してあります)という名前のファイルに3枚の画像をimg/0.jpg、img/1.jpg、img/2.jpgの名前で保存したいのですが、img/0.jpgという名前のファイルに画像を保存するというコードになっているのだと思います。どのようにしたら、この問題を解決できるのでしょうか?
131
133
 
134
+ この疑問に対して
135
+
136
+ > imgはファイルですか?ファイルなのかディレクトリなのか整理された方が良いかと思います。
137
+
138
+ >img ディレクトリを作成しておくとよいかと。
139
+
140
+ という回答者様からの回答をいただき、
141
+ ```Python
142
+ import os
143
+ os.mkdir('./img_diretory')
144
+ ```
145
+ を実行したところ
146
+ imgに
147
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/ac02bf66-eb2c-48b4-9cd4-c2a0e8fd2d9c.png)
148
+ img_directoryというディレクトリが作成されました。
149
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/e6654ecc-8166-41a5-a41a-d4df8416f2be.png)
150
+
151
+ そして、
152
+ - print(os.path.exists('img'))
153
+ - print(os.path.isfile('img'))
154
+ - print(os.path.isdir('img'))
155
+ この全ての操作を行ったところ、Falseという結果出てきました。つまり、
156
+ - ファイルまたはディレクトリ(フォルダ)の存在確認: os.path.exists()
157
+ - ファイルの存在確認: os.path.isfile()
158
+ - ディレクトリ(フォルダ)の存在確認: os.path.isdir()
159
+ 全てに当てはまらないことを意味するのだと思います。
160
+
161
+ この解決策がわからなかったので、とりあえず、新規のディレクトリを作成することにしてみました。
162
+ ```
163
+ mkdir dir1
164
+ ```
165
+ dir1というディレクトリ名のディレクトリを作成する操作を行ったところ、
166
+ ![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2023-03-19/03d78708-c76b-4622-8fc9-cc835f91f3db.png)
167
+ imgにdir1が作成されていました。つまりこれが意味することは、imgはディレクトリやファイルよりも大きな括りであり、ディレクトリやフォルダを作成するコードを作成した際に自動的にそこ(img)に入る存在であるということだと考えられます。
168
+
169
+ ### 新たな疑問
170
+ - ここでのimgはどのような存在ですか
171
+ - imgに自動的にディレクトリやファイルが入る操作をやめるにはどうすれば良いでしょうか
172
+
173
+

2

調査したこと・試したことの追加

2023/03/18 00:09

投稿

loulou098
loulou098

スコア15

test CHANGED
File without changes
test CHANGED
@@ -92,5 +92,40 @@
92
92
  Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content))
93
93
  Img.save(f'img/{i}.jpg')
94
94
  ```
95
+ ### 調査したこと・試したこと
95
96
 
97
+ > エラー(MissingSchema)の原因はimg_tag.get('shogun_images_urls')がNoneだからだと思います。
96
98
 
99
+ という回答者様からのアドバイスから
100
+ ```
101
+ Img=Image.open(io.BytesIO(requests.get(img_tag.get('shogun_images_urls')).content))
102
+ ```
103
+ を下記の様に書き換えました。
104
+
105
+ ```
106
+ Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))
107
+ ```
108
+
109
+ すると、以下のエラーが出ました。
110
+ ```
111
+ ---------------------------------------------------------------------------
112
+ FileNotFoundError Traceback (most recent call last)
113
+ /var/folders/jr/2p724fh51wv7fxmql7kxyb1h0000gn/T/ipykernel_50717/2061955084.py in <module>
114
+ 23 Img=Image.open(io.BytesIO(requests.get(shogun_images_url).content))
115
+ 24 # Img.save('img/sample.jpg')
116
+ ---> 25 Img.save(f'img/{i}.jpg')
117
+ 26
118
+ 27 #エラー
119
+
120
+ ~/opt/anaconda3/lib/python3.9/site-packages/PIL/Image.py in save(self, fp, format, **params)
121
+ 2315 fp = builtins.open(filename, "r+b")
122
+ 2316 else:
123
+ -> 2317 fp = builtins.open(filename, "w+b")
124
+ 2318
125
+ 2319 try:
126
+
127
+ FileNotFoundError: [Errno 2] No such file or directory: 'img/0.jpg'
128
+ ```
129
+
130
+ img(このファイルは作成してあります)という名前のファイルに3枚の画像をimg/0.jpg、img/1.jpg、img/2.jpgの名前で保存したいのですが、img/0.jpgという名前のファイルに画像を保存するというコードになっているのだと思います。どのようにしたら、この問題を解決できるのでしょうか?
131
+

1

タイトル名の変更

2023/03/17 22:24

投稿

loulou098
loulou098

スコア15

test CHANGED
@@ -1 +1 @@
1
- 【Pythonスクレイピング】3枚画像を保存した
1
+ 【Pythonスクレイピング】Invalid URL 'None': No scheme supplied. Perhaps you meant http://None?意味がわからな
test CHANGED
File without changes