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

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

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

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

Q&A

解決済

3回答

225閲覧

スクレイピングで取得したurlが、全て繋がって表示されてしまう。

maron1220

総合スコア18

Python

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

0グッド

0クリップ

投稿2018/12/16 14:18

python

1html= requests.get("https://www.springfieldspringfield.co.uk/latest-movie-scripts.php?page=1").text 2soup=BeautifulSoup(html,"html.parser") 3links=soup.find_all("a") 4urls="" 5 6for link in links: 7 url=link.get("href") 8 print(url)

により取得されたurl群に
1、"/movie_script.php?movie"を持つurlのみを抜き出す。
2、urlの先頭に"https://www.springfieldspringfield.co.uk"を付け加える
という動作をさせたく

python

1for link in links: 2 url=link.get("href") 3 if url.find("/movie_script.php?movie") > -1 : 4 urls +="https://www.springfieldspringfield.co.uk"+url 5 6print(urls)

という構文を付け加えました。

その結果が、
"https://www.springfieldspringfield.co.uk/movie_script.php?movie=badhaai-hohttps://www.springfieldspringfield.co.uk/movie_script.php?movie=badhaai-hohttps://www.springfieldspringfield.co.uk/movie_script.php?movie=fantastic-beasts-the-crimes-of-,,,,"

といったように全てのurlが繋がって表示されてしまいました。

結果を
"https://www.springfieldspringfield.co.uk/movie_script.php?movie=badhaai-ho"
"https://www.springfieldspringfield.co.uk/movie_script.php?movie=badhaai-ho"
のように一つ一つurlを分けて表示するためにはどうすれば良いでしょうか?

よろしくお願いします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

リストを使うのが安直な方法かと思います。

Python

1urls = [] 2 3for link in links: 4 url = link.get("href") 5 if url.find("/movie_script.php?movie") > -1 : 6 urls.append("https://www.springfieldspringfield.co.uk" + url) 7 8for url in urls: 9 print(url)

また、find(...) > -1はin演算子を用いて書き直した方が分かり易いかと。

Python

1if "/movie_script.php?movie" in url: 2 ...

投稿2018/12/16 14:29

LouiS0616

総合スコア35660

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

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

maron1220

2018/12/16 22:37

丁寧な回答で、補足情報までありがとうございます!
guest

0

request-htmlならabsolute_linksでリンクを取得できます

sh

1pip install requests-html

python

1from requests_html import HTMLSession 2session = HTMLSession() 3 4r = session.get( 5 'https://www.springfieldspringfield.co.uk/latest-movie-scripts.php?page=1') 6 7result = [i for i in r.html.absolute_links if r'/movie_script.php?movie' in i] 8 9print(result)

投稿2018/12/17 01:11

編集2018/12/17 12:51
barobaro

総合スコア1286

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

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

maron1220

2018/12/17 13:20

そんなライブラリがあるんですね! ありがとうございます!!
guest

0

urls +=urlsの後ろにどんどん継ぎ足しているので、そうなります。

Python

1for link in links: 2 url=link.get("href") 3 if url.find("/movie_script.php?movie") > -1 : 4 print("https://www.springfieldspringfield.co.uk"+url)

と、継ぎ足さずにprintすれば良いかと思います。

投稿2018/12/16 14:33

otn

総合スコア84499

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

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

maron1220

2018/12/16 22:38

ありがとうございます!助かります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問