〇実現したいこと
・https://www.uta-net.com/close_up/2019_kamihankiの2019年上半期楽曲別アクセスランキングTOP30のリンクを全て取得したい。(下記画像の曲名全てのリンクを取得したい)
〇出力結果
[]
[]
[]
[]
続く
[]
[]
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア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
総合スコア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総合スコア85893
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/08 03:18
2019/12/08 04:58
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。