Beautiful Soup Python スクレイピング

【Python】requestsでimgタグにバイナリでデータが埋め込まれている画像ファイルをスクレイピングする

この記事は約3分で読めます。

 

 

今回はバイナリファイルになっている画像の取得方法について紹介したいと思います。

 

Google検索画面や個人サイトなどをスクレイピングをしているとたまに<img src=’ data:image/jpeg;base64:~~~~~’>みたいな、画像の引用元がhttpではないタグ引数に遭遇します。

 

こういう形式の場合、画像はhttpのパス形式ではないのでrequestsだと書式エラーで取得できません。というのもこれはパスではなく画像がバイナリでそのまま埋め込まれているのでrequestsを使う必要がないのです。

 

このようなバイナリでそのまま埋め込まれている画像を取得してjpgなどの画像ファイルにして可視化するためにはデコードする必要があります。

 

参考:https://techacademy.jp/magazine/28860

 

 

スポンサーリンク
スポンサーリンク

Pythonでバイナリファイルをデコードしてファイルに書き出す

 

Pythonでバイナリファイルをデコード・エンコードする際にはbase64というライブラリを使用します。

 

import base64
from bs4 import BeautifulSoup
import requests

r = requests.get('https://~~~~~~')
soup = BeautifulSoup(r.content, 'html_parser')

img_tag = soup.find('img') # <img src="data:image/png;base64,xxxxxxxxxxxxxxxxxxxxxxxxx", ~~~~>

# バイナリファイルをデコードして画像ファイルとして書き出す
with open('test.jpg', 'wb') as f:
    f.write(base64.b64decode(img_tag.get('src').split('base64,')[1]))

 

 

 

 

参考:https://www.javadrive.jp/python/file/index4.html

参考:https://teratail.com/questions/257227

 

 

 

 

 

 


プログラミング・スクレイピングツール作成の相談を受け付けています!

クラウドワークス・ココナラ・MENTAなどでPython・SQL・GASなどのプログラミングに関する相談やツール作成などを承っております!

過去の案件事例:

  • Twitter・インスタグラムの自動化ツール作成
  • ウェブサイトのスクレイピングサポート
  • ダッシュボード・サイト作成
  • データエンジニア転職相談

これまでの案件例を見る

キャリア相談もお気軽に!文系学部卒からエンジニア・データサイエンティストへの転職経験をもとに、未経験者がどう進むべきかのアドバイスを提供します。


スポンサーリンク
/* プログラミング速報関連記事一覧表示 */
ミナピピンの研究室

コメント

タイトルとURLをコピーしました