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

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

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

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

Q&A

解決済

2回答

277閲覧

インプット関数で、ターミナルからurlを複数インプットさせ、本文を表示したい

taboopython

総合スコア40

Python

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

0グッド

0クリップ

投稿2019/07/25 01:29

編集2019/07/25 01:34

インプット関数で、ターミナルからurlを複数インプットさせ、複数のurlから本文を表示させたいところ、

次のようにコードを作成しましたが、

一つのurl については、インプットできましたが、

複数指定すると、urlエラーとなり、正しく内容を表示できませんでした。
(プログラムエラーメッセージは出ない)

指定方法、複数inputの方法等、おわかりなればご教示いただければ幸いです。

python

1z = input('URLを入力してください。: ') 2print(z) 3 4html=requests.get( z ).text 5 6・・・ 7

補足です。 プログラムを実行すると、ターミナルに「URLを入力してください。」と指示が出た後、urlを(https://a , https://b)のように複数入力すると読み込まれるようにしたいです。

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

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

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

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

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

guest

回答2

0

どうやって複数入力するかによります。
1行に1つずつ入力するなら、ループすれば良い。
空白で区切って複数を1行に書くなら、空白でsplitすればいい。

#追記
こんな感じで。

Python

1import requests 2 3urls = [] 4while True: 5 z = input('URLを入力してください。: ') 6 if z == "": 7 break 8 urls.append(z) 9 10for url in urls: 11 html = requests.get(url).text 12 print(url) 13 print(html)

投稿2019/07/25 01:35

編集2019/07/25 12:26
otn

総合スコア84423

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

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

taboopython

2019/07/25 02:15

ありがとうございます。ちなみに次のように改行してインプットをする場合は \nでsplitするという理解であってますでしょうか? >> https://a https://b https://c for url in z.split('\n'): な感じで記述し実行してみましたが、can110さんへのお返事にも書いたとおり、うまく出力できないところがありましたので。
otn

2019/07/25 05:04

1行1つなら、1行でinputが完結するので、 while True: z = input('URLを入力してください。: ') if z == "": break print(z) html = requests.get(z).text print(html)
taboopython

2019/07/25 11:29

ありがとうございます!ちなみに、1行ひとつなのですが、まとめて次のように https://a https://b https://c とインプットさせたいのですがこちらだといかがでしょうか?
guest

0

ベストアンサー

スペース区切で入力するようにしてはいかがでしょうか。

Python

1import requests 2 3z = input('URLを入力してください。: ') 4print(z) 5for url in z.split(' '): 6 html = requests.get(url).text 7 print(html)

投稿2019/07/25 01:34

can110

総合スコア38234

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

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

taboopython

2019/07/25 02:08

ありがとうございます。 少し先に進めそうです。ただ、スペースを入れて複数インプットしたところ、次のコードだと、テキストが正しく表示されず、urlごとにテキストのみを表示させることができませんでした。エラーにはならなかったもののhtmlを含めた形でテキスト以外の不要なhtmlコードが表示されてしまいました。 複数インプットがうまくいっていないのか、表示コードの問題なのか、もしおわかりになればご教示いただければ幸いです。(最初の質問の範囲を超えているようであれば新たな質問を作ろうと思います。) import requests import pandas as pd from bs4 import BeautifulSoup # Python3系のinput関数 z = input('URLを入力してください。: ') print(z) for url in z.split(' '): html = requests.get(url).text print(html) soup=BeautifulSoup(html,"html.parser") #print(soup.prettify) for script in soup(["script", "style"]): script.decompose() #print(soup) text=soup.get_text() lines= [line.strip() for line in text.splitlines()] print(text)
can110

2019/07/25 02:15

> 複数インプットがうまくいっていないのか、表示コードの問題なのか 問題を切り分けるには、単一のURLのみ入力して動作させてみるとよいのではないでしょうか。
taboopython

2019/07/25 11:30

ありがとうございます!単一ではうまくいくので、やはり他の問題のようです。いまいちどトライしてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問