🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

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

Python

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

Q&A

解決済

3回答

1125閲覧

スクレイピング 上半期別曲のリンクを取得したい

shohei_mlb

総合スコア9

スクレイピング

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

Python

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

0グッド

1クリップ

投稿2019/12/07 17:22

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

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

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

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

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

guest

回答3

0

seleniumでは下記で30個のURLが取得できましたので、bs4用に書き換えていただければ良いかと存じます。
ID"ranking2"に含まれるtag"a"を取得する方向で記載いただければ良いようです。

urls = [] for i in driver.find_element_by_id("ranking2").find_elements_by_tag_name("a"): urls.append(i.get_attribute("href"))

投稿2019/12/08 12:10

編集2019/12/08 12:14
john_doe_

総合スコア354

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

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

0

こんにちわ。
他に良い指定方法があるかもしれませんが、とりあえず動かすなら
link変数の指定方法に属性でフィルターをかけた方が良いのでは。

python3

1soup=BeautifulSoup(response.text,'html.parser') 2a="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;" 3b = soup.find_all('a',{'onclick':a}) 4```すると、urlに近い情報を抜きとれます。 5後は①href属性を抜きとり(getメソッド)、②不要部分の削除(この場合#以降が邪魔ですね)、③相対パスを絶対パスへ。①~③をループ処理 6という流れになるかと。 7②の部分が面倒そうですが、関数作っちゃっていいと思います。例を置いておきます。 8```python3 9def delite_tag(tag): 10 return tag[:tag.find('#')]

投稿2019/12/08 08:31

pesta

総合スコア21

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

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

0

ベストアンサー

href属性を持っているのは、tdじゃなくてaです。
#追記
ランキングテーブル中のaタグのhref属性を得る。

Python

1 for tr in soup.find(id="ranking2").find_all("tr")[1:]: 2 print(tr.find("a").get("href"))

投稿2019/12/08 02:01

編集2019/12/08 12:17
otn

総合スコア85893

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

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

shohei_mlb

2019/12/08 03:00 編集

リンク内の"/song/number/#view_main" だけ取得することは可能ですか? 〇ソースコード import requests from bs4 import BeautifulSoup import pandas as pd import time list_df = pd.DataFrame(columns=['曲名', '歌詞']) url = 'https://www.uta-net.com/close_up/2019_kamihanki' response = requests.get(url) soup = BeautifulSoup(response.text, 'lxml') links = soup.find_all('td') for link in links: l = link('a') print(l) >>>>>>>>>>>>>>> 〇出力結果 [<a href="/song/244127/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">Lemon/米津玄師</a>] [] [] [] [] [<a href="/song/261730/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">HAPPY BIRTHDAY/back number</a>] [] [] [] [] [<a href="/song/263550/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">白日/King Gnu</a>] [] [] [] [] [<a href="/song/251631/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">マリーゴールド/あいみょん</a>] [] [] [] [] [<a href="/song/256753/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">オールドファッション/back number</a>] [] [] [] [] [<a href="/song/215594/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">LOSER/米津玄師</a>] [] [] [] [] [<a href="/song/266648/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">Pretender/Official髭男dism</a>] [] [] [] [] [<a href="/song/239017/#view_main" onclick="window.open(this.href, 'hoge','scrollbars=yes,width=660,height=700'); return false;">瞬き/back number</a>] [] [] [] []
otn

2019/12/08 03:18

ちょっと意味が分かりません。 href属性が欲しいということですか?
shohei_mlb

2019/12/08 04:58

はい、そうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問