前提・実現したいこと
webスクレイピングでページ移動をしたい
webのurl https://scraping-for-beginner.herokuapp.com/ranking/
python webスクレイピングに関して初心者なので汚かったらすいません...
発生している問題・エラーメッセージ
web ページにnextボタン(1ページ移動)があるのですがxpathでクリックするとInternal Server Error というエラーがでてしまいます。
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
質問
html
1<li class="disabled"><a href="/ranking/?page=prev"><i class="material-icons">chevron_left</i></a></li><!-- 邪魔で取り除きたい --> 2<li class="active"><a href="/ranking/?page=1">1</a></li> <!-- 残したい--> 3<li class="waves-effect"><a href="/ranking/?page=2">2</a></li> <!-- 残したい--> 4<li class="waves-effect"><a href="/ranking/?page=3">3</a></li> <!-- 残したい--> 5<li class="waves-effect"><a href="/ranking/?page=next"><i class="material-icons">chevron_right</i></a></li><!-- 邪魔で取り除きたい -->
ある要素を取り除くことはできるのですが、親ごと取り除く方法はありますか
簡単に言うと残したいもの以外を消す方法を教えてください。お願いします
web ページにnextボタン(1ページ移動)があるのですがxpathでクリックするとInternal Server Error というエラーがでてしまう原因はわかりますか?
メジャーなページ移動方法を教えてください。
試したこと
web ページにnextボタン(1ページ移動)があるのですがxpathでクリックするとInternal Server Error というエラーがでてしまう
python
1driver.find_element_by_xpath('//*[@id="pagination"]/ul/li[5]').click()
ので、別の方法でurlを作成する方法を考えました
url + '/ranking/?page={i}' 後ろが1ずつ増えているので
python
1#動作確認 2 3for i in range(10): 4 next_url = urljoin(url, f'/ranking/?page={i+1}') 5 res = requests.get(next_url) 6 if(res.status_code != 200): 7 break 8 print(next_url)
ページは url + /ranking/?page=1 ~ 3 までしかないので 3で止まると思いきや
1~10 まで生成され url + /ranking/?page=10 をクリックすると url + /ranking/?page=1 に飛ぶのでこの方法もあきらめました
次に
href からurlを取り出してリストに格納し結合する方法を考えました
html
1<!-- urlがある場所--> 2<div class="center-align" id="pagination"> 3<ul class="pagination"> 4<li class="disabled"><a href="/ranking/?page=prev"><i class="material-icons">chevron_left</i></a></li> 5<li class="active"><a href="/ranking/?page=1">1</a></li> 6<li class="waves-effect"><a href="/ranking/?page=2">2</a></li> 7<li class="waves-effect"><a href="/ranking/?page=3">3</a></li> 8<li class="waves-effect"><a href="/ranking/?page=next"><i class="material-icons">chevron_right</i></a></li>
python
1url = html.find('ul', attrs={'class': 'pagination'})
html
1<!--結果--> 2<ul class="pagination"> 3<li class="disabled"><a href="/ranking/?page=prev">chevron_left</a></li> 4<li class="active"><a href="/ranking/?page=1">1</a></li> 5<li class="waves-effect"><a href="/ranking/?page=2">2</a></li> 6<li class="waves-effect"><a href="/ranking/?page=3">3</a></li> 7<li class="waves-effect"><a href="/ranking/?page=next">chevron_right</a></li> 8</ul>
python
1# url = url.find_all('a') 2# 結果 3[<a href="/ranking/?page=prev">chevron_left</a>, # 邪魔で取り除きたい 4 <a href="/ranking/?page=1">1</a>, 5 <a href="/ranking/?page=2">2</a>, 6 <a href="/ranking/?page=3">3</a>, 7 <a href="/ranking/?page=next">chevron_right</a>] # 邪魔で取り除きたい 8 9url = url.find_all('a')[0].get('href') 10# 結果 11'/ranking/?page=prev'
邪魔なものが取り除けない!
補足情報(FW/ツールのバージョンなど)
windows10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/05 15:03
2021/05/05 15:09