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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

2205閲覧

python3 で画像データをスクレイピング出来ない

comet0310

総合スコア59

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/04/28 10:22

Beautifulsoupとrequestsを使って厚生労働省(https://www.mhlw.go.jp/stf/newpage_11043.html)の以下の画像ファイルをスクレイピングにより取得しようとしているのですが出来ませんでした。
恐らくimgに指定の画像が入っていると思います。
取得した画像ファイルが特別なものなのでしょうか。
どなたかお分かりになる方、質問にお答えくださると幸いです。
よろしくお願いいたします。

コロナの感染者数

python3

1import requests 2from bs4 import BeautifulSoup 3from lxml import html 4 5target_url='https://www.mhlw.go.jp/stf/newpage_11043.html' 6res = requests.get(target_url) 7res.raise_for_status() 8soup = bs4.BeautifulSoup(res.content, "html.parser") 9elems=soup.select('a') 10img=soup.select('.m-grid__col1')[0].find('img') 11r = requests.get(img['src']) 12with open(str('./picture/')+str(uuid.uuid4())+str('.jpeg'),'wb') as file: 13 file.write(r.content)
--------------------------------------------------------------------------- InvalidSchema Traceback (most recent call last) <ipython-input-475-b6e5e58c21be> in <module> ----> 1 r = requests.get(img['src']) 2 with open(str('./picture/')+str(uuid.uuid4())+str('.jpeg'),'wb') as file: 3 file.write(r.content) /usr/local/lib/python3.7/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 /usr/local/lib/python3.7/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 /usr/local/lib/python3.7/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) 531 } 532 send_kwargs.update(settings) --> 533 resp = self.send(prep, **send_kwargs) 534 535 return resp /usr/local/lib/python3.7/site-packages/requests/sessions.py in send(self, request, **kwargs) 638 639 # Get the appropriate adapter to use --> 640 adapter = self.get_adapter(url=request.url) 641 642 # Start time (approximately) of the request /usr/local/lib/python3.7/site-packages/requests/sessions.py in get_adapter(self, url) 729 730 # Nothing matches :-/ --> 731 raise InvalidSchema("No connection adapters were found for '%s'" % url) 732 733 def close(self): InvalidSchema: No connection adapters were found for 'data:image/png;base64,iVBORw0KGgoA・・・'

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

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

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

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

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

guest

回答1

0

ベストアンサー

実際のHTMLを見て無いのでしょうか?
<img src="https://~~" />じゃなくて、<img src="data:~~" />ですよ。

投稿2020/04/28 13:07

otn

総合スコア84555

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

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

comet0310

2020/04/28 13:30

コメントありがとう御座います。 data: に関してはスクレイピング出来ないという事でしょうか。
otn

2020/04/28 13:46

できますよ。というか、出来てますよ。
comet0310

2020/04/29 05:48

ありがとう御座います。確かにアドレスバーに入力した所画像が表示されました。 さらに質問で申し訳ないのですがこの dataスキームをpng画像に変換して保存する方法はありますでしょうか。調べても出てこなかったのでよろしければ教えて頂けると幸いです
otn

2020/04/29 06:14

説明を読んでも理解できなかったということでしょうか? src="data:image/png;base64,~~~~" の ~~~ の部分を取り出して、base64でデコードします。 取り出しは、固定文字列の削除なのでreplaceで。 デコードはbase64.b64decode()で。 デコード結果がバイト列になるので、ファイルにバイナリーモードで書き出します。
comet0310

2020/04/30 07:15

ありがとう御座います。 f = open('test.png', 'wb') # バイナリモードでファイルに書き込み f.write(base64.b64decode(img)) # \n (LF)で保存される f.close() にて出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問