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

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

新規登録して質問してみよう
ただいま回答率
85.50%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

Q&A

解決済

1回答

2633閲覧

【Python】タグとclassを同時に指定し、特定のタグを削除する方法

coromame_bane

総合スコア15

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python

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

0グッド

2クリップ

投稿2018/09/25 16:39

前提・実現したいこと

UtaTenという歌詞検索サイトから歌詞をスクレイピングしたいです。スクレイピングしたい歌詞
漢字にはひらがなでルビが振られているんですが、
そのせいで歌詞をスクレイピングすると、ルビも同時に取得してしまい、困っています。

ルビは要らないので取得したくないです。
unwrapメソッドを使って、クラス"rt"を削除しようとしてみたのですが上手くいきません。

申し訳ありませんが、ご教授ください。
以下のタグ構造は一部を抜粋したもの。

タグ構造

HTML

1<div class="medium"> 2 <span class="ruby"><span class="rb">桜</span><span class="rt">さくら</span></span>の<span class="ruby"><span class="rb">予報</span><span class="rt">よほう</span></span>も<span class="ruby"><span class="rb">虚</span><span class="rt">むな</span></span>しく<br> 3 <span class="ruby"><span class="rb">大雨</span><span class="rt">おおあめ</span></span>が<span class="ruby"><span class="rb">花</span><span class="rt">はな</span></span>を<span class="ruby"> 4 <span class="rb">散</span><span class="rt">ち</span></span>らせた<br> 5</div>

試したこと

Python

1import requests 2from bs4 import BeautifulSoup 3 4url = "https://utaten.com/lyric/sumika/%E6%98%A5%E5%A4%8F%E7%A7%8B%E5%86%AC/" 5 6headers = {'User-Agent':'Mozilla/5.0'} 7r = requests.get(url, headers=headers) 8soup = BeautifulSoup(r.text, "lxml") 9 10kashi = soup.find("div", class_="medium") 11print(kashi.text.strip())

出力

桜さくらの予報よほうも虚むなしく 大雨おおあめが花はなを散ちらせた 4月がつの風かぜ 少すこし寒さむくて 夜よるはまだ長ながくて (省略)

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

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

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

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

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

guest

回答1

0

ベストアンサー

.extract() を使って <span class="rt">...</span> を削除するとよいのではないでしょうか

Python

1import requests 2from bs4 import BeautifulSoup 3 4url = "https://utaten.com/lyric/sumika/%E6%98%A5%E5%A4%8F%E7%A7%8B%E5%86%AC/" 5 6headers = {'User-Agent':'Mozilla/5.0'} 7r = requests.get(url, headers=headers) 8soup = BeautifulSoup(r.text, "lxml") 9 10kashi = soup.find("div", class_="medium") 11for rt in kashi.find_all("span", {'class':"rt"}): 12 rt.extract() 13print(kashi.get_text())

投稿2018/09/26 00:04

編集2018/09/26 04:13
magichan

総合スコア15898

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

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

coromame_bane

2018/09/26 10:37

ありがとうございます!! 無事目的の結果が得られました。 extract覚えておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問