Pythonで画像スクレイピング&ダウンロード
前回の記事で使ったBeautifulSoupを応用して、今回は画像をスクレイピングしたいと思います。
スクレイピングするサイトですが、これも前に書いた記事Bashで画像ダウンロードで使用したサイトにします。
画像URLの取得
クラス名mdMTMWidget01ItemCite01Valueを探してリンク情報を取得します。
import requests from bs4 import BeautifulSoup url='https://matome.naver.jp/odai/2149130246521074801' req = requests.get(url) soup = BeautifulSoup(req.text, 'html.parser') feeds = soup.find_all(class_='mdMTMWidget01ItemCite01Value') for feed in feeds: print(feed.a.get('href'))
これでjpg画像のURLを取得出来ることが分かりました。
画像のダウンロード
sleepを使いたいのでインポートしておきます。
from time import sleep
先程のコードを多少変更して追加
count = 0 for feed in feeds: img_url = feed.a.get('href') img_file = requests.get(img_url) save_name = f'./test_{count:03}.jpg' #保存場所とファイル名 with open(save_name, 'wb') as f: f.write(img_file.content) sleep(1) count+=1
ダウンロードにはRequestsを使用します。
保存ファイル名を指定してファイルを書き込み、スリープを挟みながら処理していきます。
複数ページ処理については難しくないと思うので割愛。
まとめ
全コード
import requests from bs4 import BeautifulSoup from time import sleep url='https://matome.naver.jp/odai/2149130246521074801' req = requests.get(url) soup = BeautifulSoup(req.text, 'html.parser') feeds = soup.find_all(class_='mdMTMWidget01ItemCite01Value') count = 0 for feed in feeds: img_url = feed.a.get('href') img_file = requests.get(img_url) save_name = f'./test_{count:03}.jpg' #保存場所とファイル名 with open(save_name, 'wb') as f: f.write(img_file.content) sleep(1) count+=1
ここのサイトのソースが簡単な構造になっているというのもあり、比較的楽に画像スクレイピングが出来ました。
最初はファイルのダウンロードが上手くいかなったのですが、調べたらRequestsを使えば出来ることが分かった。
色々使えるライブラリですね。