現在Python を勉強中の初心者です。
『Webページを解析してそのページに表示されている画像をダウンロードする』
という項目をしております。プログラム自体はエラーになることなく実行できますが、そのプログラムの構文と言いますか、流れと言いますか、が分かりません。下記に打ち込んだ構文を載せております。
質問
下の構文の➀~➃までを
再度➄~➅で繰り返しているようなのですが、なぜなのでしょうか。
例えば、➂,➃で#解析して画像URLの一覧を取得 #URLの一覧をダウンロード
とありますが、➄,➅でも同じ様なことを再度している様に見えますがなぜでしょうか。
また、res=[]の構文の意味は何でしょうか。
とても基本的なことだとは思いますが、
何卒、ご教授下さい。
宜しくお願い致します。
###打ち込んだプログラム
import os, time, requests, urllib from bs4 import BeautifulSoup #画像一覧のページ target_url = 'https://uta.pw/shodou/index.php?master' #保存先のフォルダ save_dir = './image-meisaku' #ダウンロードのメイン処理....➀ def download_images(): #画像一覧のページHTMLを取得....➁ html = requests.get(target_url).text #解析して画像のURLの一覧を取得....➂ urls = get_image_urls(html) #URLの一覧をダウンロード....➃ go_download(urls) #HTMLから画像のURL一覧を取得....➄ def get_image_urls(html): #HTMLを解析 soup = BeautifulSoup(html, 'html5lib') #画像URLを取得....➅ res = [] for img in soup.find_all('img'): src = img['src'] url = urllib.parse.urljoin(target_url, src) print('img.src=', url) res.append(url) return res def go_download(urls): if not os.path.exists(save_dir): os.mkdir(save_dir) for url in urls: fname = os.path.basename(url) save_file = save_dir +'/' + fname r = requests.get(url) with open(save_file, 'wb') as fp: fp.write(r.content) print("save:", save_file) time.sleep(1) if __name__ == '__main__': download_images()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/28 16:03
2021/04/28 16:08