こんにちは、ミナピピン(@python_mllover)です。
今回はrequestsとBeautifulSoupで特定のサイト内のhtmlタグに含まれている画像データを自動収集する方法について紹介したいと思います。
requestsとBeautifulSoupで特定のサイト内の画像データを自動収集する
早速ですが、コードになります。ブラウザ上では画像が見えているのにsoup.find_all(“img”)には引っかからないという場合はjsで動的生成されたタグに含まれている可能性もあるため、seleniumで表示させてhtml.sourceでぶっこぬくという流れにしないといけません。
関連記事:【Python】Seleniumでスクレイピングする際によく使う小ネタ(引数・関数)のまとめ
from bs4 import BeautifulSoup import requests res = requests.get('https://xn--wdkj4byd.com/archives/16414') soup = BeautifulSoup(res.text, 'lxml') #要素を抽出 l_data = soup.find_all("img") num = 0 for i in l_data: num += 1 print(i.get('src')) r = requests.get(i.get('src')) with open(f'{num}_.jpg', 'wb') as f: f.write(r.content)
画像名はaltがない場合や日本語でエンコードエラーになるので無難に番号を振っていますが、その辺りは任意で変更してください。
また画像がhttpではなくdata/imageなどのバイナリ形式なっている場合は以下の記事を参考にしてください
関連記事:【Python】imgタグにバイナリでデータが埋め込まれている画像ファイルを取得する
また取得した画像をワードプレスにアップロードしたい場合は以下の記事を参考にしてみてください。
関連記事:【Python】WordPressのREST APIを使ってブログに記事を自動投稿する
コメント
[…] 関連記事:【Python】requestsとBeautifulSoupでウェブサイト内の画像データをスクレイピングで自動収集する […]