実現したいこと
- [1] webスクレイピングで目的の画像のみ取得したい
前提
プログラミング初心者,python3を使用しています.
現在,webスクレイピングで画像ファイルをダウンロードするプログラミングを書いていますが,目的以外の画像を取得しないようにする方法が知りたいです.
「イラストや」の様々な日本刀のイラストページに対して,下記コードを実行すると,バナーやサムネイルなどの画像も含んですべて取得してしまいます.
そこで,日本刀イラスト群のみ(「'div',class_='entry'」内にあるimgタブのsrc)を抜き出す方法を考えています.
① soup.find_all('div',class_='entry').find_all('img')
② soup.find_all('div',class_='entry', 'img')
③ soup_1=soup.find_all('div',class_='entry')としたあとに,soup_1.find_all('img')とするように,2段階処理を挟むのか(この方法だと最初のメソッドによりリスト化しているのでうまく行かないと思いますが),悩んでいます.
もっと簡単に処理できる方法があるならばお教えいただきたいです.よろしくお願いいたします.
該当のソースコード
python312
1url='https://www.irasutoya.com/2017/01/blog-post_417.html' 2file_dir="C:\\Users\\ユーザー名\\Desktop\\ファイル名" 3 4import time 5import os 6import requests 7from bs4 import BeautifulSoup 8 9def dl_files(url,file_dir): 10 res=requests.get(url) 11 try: 12 res_st= res.raise_for_status() 13 except Exception as exc: 14 print('Error:{}'.format(exc)) 15 16 if res_st == None: 17 soup= BeautifulSoup(res.text.encode(res.encoding),'html.parser') 18###################目的のimgタグはdiv class='entry'の階層内にある 19 img_tag= soup.find_all('img') 20################### 21 for i_t in img_tag: 22 img_url= i_t['src'] 23 if img_url.startswith('http'): 24 res_img= requests.get(img_url) 25 with open(os.path.join(file_dir,os.path.basename(img_url)),'wb') as f: 26 f.write(res_img.content) 27 time.sleep(1) 28 29# dl_files(url,file_dir)を実行する
試したこと
google検索をして,find_allの各引数を調べましたが,タグ名(name引数)を2つ設定できるかどうかはよくわかりませんでした.英語検索などはできていません.
上記のプログラミング自体は一部投稿用に変更していますが,問題なく動作することを確認しています.
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/11/24 02:01