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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

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

Q&A

2回答

600閲覧

あるPythonコードでどういう動きをしているのかを教えてください。

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

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

0グッド

0クリップ

投稿2021/10/02 11:48

聞きたいこと

以下のPythonコードでいくつか聞きたい事があります。
1.必要なPythonパッケージがもう1つあると思ってて、「datetime」かなと思うんですがどうでしょうか?
2.➀に入るコードは何だと思いますか?
3.「start = time.time()」と「print('{:.5f}'.format(time.time() - start))」って部分のコードはそれぞれどういう意味を表しているんでしょうか?
「start = time.time()」は、以降のコードを処理する開始時間だと思ってますが、もう一方の「print('{:.5f}'.format(time.time() - start))」がどういう動きをしているのかわかりません。恐らく時間を表しているんでしょうが・・・。
4.クローリングに必要な情報を取得しているコードは「r = requests.get(URI)」で間違いないですか?

該当のソースコード

Python

1import requests 2import time 3from bs4 import BeautifulSoup 4 5def get_detail(URI): 6 r = requests.get(URI) 7 soup = BeautifulSoup(r.content, 8 'lxml', 9 from_encoding="utf-8") 10 11 print(soup.find(class_="mainTitleBook").get_text(), '\n', 12 soup.find(itemprop="author").get_text(), '\n', 13 soup.find(itemprop="offers").get_text(), '\n', 14 soup.find(itemprop="isbn").get_text(), '\n') 15 16if __name__ == "__main__": 17 BASE_URI = 'https://gihyo.jp' 18 19 start = time.time() 20 r = requests.get(BASE_URI + '/book/genre?s=0802') 21 22 while True: 23 soup = BeautifulSoup(r.content, 24 'lxml', 25 from_encoding="utf-8") 26 for b in soup.find_all(class_='data'): 27 get_detail(BASE_URI + b.find("a").get("href")) 28 29 next_url = soup.find(class_="next").a 30 if next_url is None: 31 [] 32 33 r = requests.get(BASE_URI + next_url.get("href")) 34 35 print('{:.5f}'.format(time.time() - start))

補足情報

初めてこのサイトを使うので分かりにくい質問だと思います。
伝わりづらい部分は聞いて下さると助かります。

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

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

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

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

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

guest

回答2

0

3.「start = time.time()」と「print('{:.5f}'.format(time.time() - start))」って部分のコードはそれぞれどういう意味を表しているんでしょうか?

「start = time.time()」は、以降のコードを処理する開始時間だと思ってますが、もう一方の「print('{:.5f}'.format(time.time() - start))」がどういう動きをしているのかわかりません。恐らく時間を表しているんでしょうが・・・。

この部分の解決
time.time() - startを{:.5f}ってのに置換している?
:.5f のfは、固定小数点数表記
:は=みたいなもの
.は .precision(少数部分の精度)というものを表して、{:f}の場合、6桁(1.234567)までを表示する。
つまり、.5fってのは、5桁まで表示するということ
time.time() - startっていう部分が処理の開始から終了までの時間を表して、その時間を少数第5位までを表示するってこと?

投稿2021/10/02 14:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

1.必要なPythonパッケージがもう1つあると思ってて、「datetime」かなと思うんですがどうでしょうか?

そんなことはないですが、なぜそう思ったのでしょうか?

2.➀に入るコードは何だと思いますか?

next_urlNoneなので、続行すると次の文でエラーになるのでは?

3.「start = time.time()」は、以降のコードを処理する開始時間だと思ってますが、

合ってます。

もう一方の「print('{:.5f}'.format(time.time() - start))」がどういう動きをしているのかわかりません。

time.time() - startの意味はわかりますか?その値をある形式で表示しているだけです。
:5f等の意味はformatメソッドについて調べましょう。

4.クローリングに必要な情報を取得しているコードは「r = requests.get(URI)」で間違いないですか?

はい。指定URLのHTMLを取ってくる処理です。

投稿2021/10/02 12:10

otn

総合スコア84540

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

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

退会済みユーザー

退会済みユーザー

2021/10/02 12:54

「datetime」については、「print('{:.5f}'.format(time.time() - start))」の部分で関係してくるのではないかなと思いました。 このサイトを参考にしてそう思いました。(https://techacademy.jp/magazine/23375) ①の部分で「continue」を入れてみたらエラーが出なかったんですが、違いますかね・・・? 「time.time() - start」の部分は、恐らく何かの時間から開始時間を引いてるんだろうなって気はするんですが、全く分からないです。
otn

2021/10/02 13:03

> このサイトを参考にしてそう思いました。(https://techacademy.jp/magazine/23375) 悪評のサイトですね。 > ①の部分で「continue」を入れてみたらエラーが出なかったんですが、違いますかね・・・? 何故 continue を入れたのでしょうか? > 全く分からないです。 start = time.time() が開始時刻を取得しているとわかるのに、「time.time() - start」が全くわからなという状況がちょっと想像つきません。なので、何を説明すればわかってもらえるのか。。。。 time.time() を何だと思っていますか?
退会済みユーザー

退会済みユーザー

2021/10/02 13:10

「continue」は、```if next_url is None:```で、Noneになっているのでそのまま下のコードに続けさせるみたいな・・・・すいませんなんとなくです。 time.time()は、時間の取得だという風に認識しています
otn

2021/10/02 13:15

> なんとなくです。 よく考えましょう。 > time.time()は、時間の取得だという風に認識しています はいそうです。で、「time.time() - start」が全くわからないというのが想像できません。考えてないのでしょうか?考えましょう。
退会済みユーザー

退会済みユーザー

2021/10/02 13:18

考えても分からないので質問しました
退会済みユーザー

退会済みユーザー

2021/10/02 13:19

「time.time() - start」は処理の経過時間から開始時間を引いてるっていうのはきっと違いますよね。
otn

2021/10/02 13:25

> time.time()は、時間の取得だという風に認識しています と書いていながら、 >「time.time() - start」は処理の経過時間から開始時間を引いてるっていうのはきっと違いますよね。 という発想が出てくるのはおかしいですね。 「time.time()は、時間の取得だ」ということを忘れちゃった??
otn

2021/10/02 13:33

「9時から勉強を始めました。勉強を終えたのは10時30分です。10:30から9:00を引いたものは何ですか?」 はさすがに、わかりますよね?それと同じです。「10:30は経過時間ですか?」というのは違います。
退会済みユーザー

退会済みユーザー

2021/10/02 13:33

やっぱIT業界って初心者に優しくないですね
退会済みユーザー

退会済みユーザー

2021/10/02 13:35

もう大丈夫です。時間取らせてしまってすみませんでした。
otn

2021/10/02 13:41 編集

> やっぱIT業界って初心者に優しくないですね 何故そう思いましたか? みなさん初心者には優しいですよ。自力で解決できるようになってもらおうと教えています。 「わからなければ、その都度質問するので、自力で解決できるようになりたいとは思わない」ということでしょうか?
退会済みユーザー

退会済みユーザー

2021/10/02 13:39

こう考えています。という内容に対して「おかしい」だの「考えてない」だの言われるのはどう考えても優しくないじゃないですか?
can110

2021/10/02 13:42

IT業界ってとても初心者に優しいと思うのですが、初心者にいちばん優しい業界を教えてください。
otn

2021/10/02 13:49

「なんとなくです」と言われると「ちゃんと考えましょう」としか言い様がないです。 continueというのは真剣に考えた結果ではなく、なんとなくそう思ったということですよね? あるいは、実際には真剣に考えた結果だが、「なんとなく」と書いてしまったのでしょうか?
退会済みユーザー

退会済みユーザー

2021/10/02 13:51 編集

「continue」についてはさっぱりわからなくなったので「なんとなく」と書きました
退会済みユーザー

退会済みユーザー

2021/10/02 13:52

> time.time()は、時間の取得だという風に認識しています と書いていながら、 >「time.time() - start」は処理の経過時間から開始時間を引いてるっていうのはきっと違いますよね。 という発想が出てくるのはおかしいですね。 「time.time()は、時間の取得だ」ということを忘れちゃった?? これはどう見ても良い感じがしないですよね?
otn

2021/10/02 14:50

time.time()は実行時点の時刻なので、開始時刻を引けば、それまでの経過時間ですね。 {:.5f}は、formatメソッドの機能で、f が固定小数点表示で小数点以下5桁です。 > これはどう見ても良い感じがしないですよね? は、 > start = time.time() が開始時刻を取得しているとわかるのに、「time.time() - start」が全くわからなという状況がちょっと想像つきません。なので、何を説明すればわかってもらえるのか。。。。 と書いたとおりで、途方に暮れてます。 start = time.time() が開始時刻を取得しているとわかるのであれば、「time.time() - start」の意味もわかるはずなのに、それをわからないとするとどういうケースがあり得るのか? > 「time.time()は、時間の取得だ」ということを忘れちゃった?? は、国語で言うところの反語表現ですね。「忘れちゃったはずはないので、time.time()は、時間の取得だということをしっかり認識すれば理解できるはず」という意味です。
退会済みユーザー

退会済みユーザー

2021/10/02 14:57

変に突っかかってすみませんでした。 もう一度自分で考え直してきます。
otn

2021/10/02 14:57

next_url は文字通り次のURLですが、次のURLがないのであれば、処理(whileループ)は終わりでしょう。 continueで継続するのでなく、breakで抜けないと。 というのが、考え方なのですが、continueに至った思考の道筋が見えないので、知ってるキーワードを言ってみただけみたいに見えます。
otn

2021/10/02 15:15

回答するパターンにもいろいろあって、 ・答えだけ書いて解説なし ・答えと解説 ・方針だけ書いて考えてもらう ・ヒントだけ出して考えてもらう などなど。 今回はヒントのパターンかと思ったのですが、方針のパターンがよかったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問