前提
ランキングサイトからランクとnameを取得するコードを作成中
- 1ページにランキングは100個
- それが1591ページまである
- ランキング部分はjavascriptだから、requestsではなくseleniumを使用
- 「次のページ」ボタンは10ページまでしかないので、urlのページ番号をwhileで変更させてアクセス
- クラウドではなく、ローカル
- mac
実現したいこと
ランキングサイトからランクとnameを取得したい
発生している問題
2つあります
①「値が無いよ」と言われて途中で止まる
(ページ数) 238 ->1591まで 239 ->1591まで 240 ->1591まで 241 ->1591まで 242 ->1591まで 243 ->1591まで 244 ->1591まで 245 ->1591まで list index out of range <-エラーメッセージ
該当のソースコード
python
1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.webdriver.common.by import By 4from selenium.webdriver.common.keys import Keys 5from bs4 import BeautifulSoup 6from pprint import pprint 7import pandas as pd 8 9 10# オプション 11options = webdriver.ChromeOptions() 12options.add_argument('--headless') # ブラウザ立ち上げるか 13driver = webdriver.Chrome("/Users/mt/Documents/program/Python/scraping_かむなび/chromedriver", options=options) 14driver.implicitly_wait(10) 15 16url= "https://navi.kamuitracker.com/ranking/youtube_alltime?pg=" 17pageNum = 1 18rankList = [] 19chNameList = [] 20 21def main(): 22 try: 23 while pageNum < 1592: 24 driver.get(url + str(pageNum)) 25 driver.implicitly_wait(10) 26 content = driver.page_source 27 soup = BeautifulSoup(content, "html.parser") 28 elements = soup.find_all('div', class_='ranking-wrap')[0] 29 for a in elements.find_all('a'): 30 rankList.append(a.find('p', class_='num').string) # ランキング 31 chNameList.append(a.find('p', class_='name').string) # ch名 32 pageNum += 1 33 print(pageNum, " ->1591まで") 34 # csvに保存 35 df = pd.DataFrame(rankList) 36 df.to_csv('rankList.csv') 37 df = pd.DataFrame(chNameList) 38 df.to_csv('chNameList.csv') 39 except Exception as e: 40 print(e) 41 # csvに保存 42 df = pd.DataFrame(rankList) 43 df.to_csv('rankList.csv') 44 df = pd.DataFrame(chNameList) 45 df.to_csv('chNameList.csv') 46 47 48if __name__ == '__main__': 49 main() 50 51
試したこと
①「値が無いよ」と言われて途中で止まる
の部分は、再度そこからスタートさせると普通に取れる
②はなにも試していない
もしかしてdriver.get(url) を何回もやりすぎてるのがよく無いのでしょうか?
すみませんがよろしくお願いします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/21 07:46
2023/01/21 08:01
2023/01/21 09:28
2023/01/21 10:11
2023/01/21 11:27