質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

914閲覧

python 構文の意味 webページを解析してダウンロードの手順が分かりません。

MitAbe

総合スコア15

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

ダウンロード

リモートシステムからローカルシステムへとデータを受信する事、もしくはそのようなデータ転送を行う事をダウンロードと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/04/28 15:19

現在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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下の構文の➀~➃までを

再度➄~➅で繰り返しているようなのですが、なぜなのでしょうか。
例えば、➂,➃で#解析して画像URLの一覧を取得 #URLの一覧をダウンロード
とありますが、➄,➅でも同じ様なことを再度している様に見えますがなぜでしょうか。

おっしゃられている意味がよくわかりません。①〜⑥の番号の位置が質問者が想定しているものと異なるのでしょうか?

python

1def download_images(): 2 html = requests.get(target_url).text # 画像一覧のページHTMLを取得....➁ 3 urls = get_image_urls(html) # HTMLを解析して画像のURLの一覧を取得....➂=⑤ 4 go_download(urls) # URLの一覧をダウンロード....④

⑤、⑥を繰り返しているというより、 get_image_urls 関数を呼び出しているのが ③ です。
「関数」がよくわからないのであれば、Pythonの文法をチュートリアルなどで学び直すことをおすすめします。

res = [] の構文の意味は何でしょうか。

res という名前の変数に要素が0個の list を代入しています。

投稿2021/04/28 15:31

編集2021/04/28 16:09
mather

総合スコア6759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ppaul

2021/04/28 16:03

Pythonのリストは配列とは呼びません。 []は空リストです。 過去の質問で、リストを配列と誤解して存在しない機能を期待した結果の誤解がかなり多いので、用語には注意してください。
mather

2021/04/28 16:08

失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問