前提・実現したいこと
pythonでfor文によるループ処理をしたいのですが、ループせずに処理が止まってしまう状況です。
エラーは出ずに処理が停止する状況です
発生している問題個所
#IDを引き抜く USERID_PATH = '/html/body/div[3]/div[2]/div/article/header/div[2]/div[1]/div[1]/h2' userids=[] userid_lists = driver.find_elements_by_xpath(USERID_PATH) for userid_list in userid_lists: userid = userid_list.text userids.append(userid) print(userid) time.sleep(random.randint(3,8)) round_page = driver.find_element_by_css_selector(NEXT_PAGE_SELECTOR) round_page.click() time.sleep(random.randint(3,8))
やりたいこととしましては、まずuseridを取得後、NEXTPAGEに遷移して、またuseridを取得し、次のページへ遷移するという挙動をしたいです
上記コードにおける
round_page = driver.find_element_by_css_selector(NEXT_PAGE_SELECTOR)
ここまではたどり着くのですが、次のuseridを取得せずに止まってしまいます。
お力添え、よろしくお願いいたします。
コード全文
python
1from selenium import webdriver 2from selenium.webdriver.common.keys import Keys 3import urllib.parse 4import time 5import random 6 7#Webdriver 8driver = webdriver.Chrome("C:/Users/yutam/Downloads/chromedriver_win32/chromedriver.exe") 9 10#URL 11MAIN_URL = "https://www.XXXX.com/" 12TAG_SEARCH_URL = MAIN_URL + "explore/tags/{}/?hl=ja" 13 14#selectors 15LOGIN_PATH = '//*[@id="react-root"]/section/main/article/div[2]/div[2]/p/a' 16LIKE_PATH = "//button/span[@class='glyphsSpriteHeart__outline__24__grey_9 u-__7']" 17LIKE_BUTTON_PATH = "//button[@class='dCJp8 afkep _0mzm-']" 18 19MEDIA_SELECTOR = 'div._9AhH0' #表示されているメディアのwebelement 20NEXT_PAGE_SELECTOR = 'a.coreSpriteRightPaginationArrow' #次へボタン 21 22#USER INFO(ユーザ名とパスワードをここにいれてください。) 23username = "XXXXX" 24password = "XXXXXX" 25#params 26tagName = "海外旅行" 27 28 29if __name__ == '__main__': 30 31 #login 32 driver.get(MAIN_URL) 33 time.sleep(random.randint(2, 7)) 34 driver.find_element_by_xpath(LOGIN_PATH).click() 35 time.sleep(random.randint(2, 7)) 36 usernameField = driver.find_element_by_name('username') 37 usernameField.send_keys(username) 38 time.sleep(1) 39 passwordField = driver.find_element_by_name('password') 40 passwordField.send_keys(password) 41 time.sleep(random.randint(2, 7)) 42 passwordField.send_keys(Keys.RETURN) 43 44 time.sleep(random.randint(2, 7)) 45 46 #通知解除 47 notification_button = driver.find_element_by_class_name('HoLwm') 48 notification_button.click() 49 time.sleep(random.randint(2, 7)) 50 51 #tag search 52 53 encodedTag = urllib.parse.quote(tagName) #普通にURLに日本語は入れられないので、エンコードする 54 encodedURL = TAG_SEARCH_URL.format(encodedTag) 55 print("encodedURL:{}".format(encodedURL)) 56 driver.get(encodedURL) 57 58 #media click 59 time.sleep(random.randint(2, 7)) 60 driver.implicitly_wait(10) 61 driver.find_element_by_css_selector(MEDIA_SELECTOR).click() 62 time.sleep(random.randint(2, 7)) 63 64 #userid,like,URL,folowwers,followsを取得したい 65 #まずidとフォロワー取得 66 67 68 #NUM_LIKED_PATH = '//*[@id="react-root"]/section/main/div/div/article/div[2]/section[2]/div/div[2]/button/span' 69 70 #NUM_FOLLOWER_PATH = '//*[@id="react-root"]/section/main/div/header/section/ul/li[2]/a/span' 71 #NUM_FOLLOW_PATH = '//*[@id="react-root"]/section/main/div/header/section/ul/li[3]/a/span' 72 73 #liked_list = drive.find_element_by_xpath(NUM_LIKED_PATH) 74 #folower_list = drive.find_element_by_xpath(NUM_FOLLOWER_PATH) 75 #folow_list = drive.find_element_by_xpath(NUM_FOLLOW_PATH) 76 77 #ユーザIDだけ引き抜けるか実験 78 postCOUNTER=0 79 postMAX=5 80 81 82 83 #IDを引き抜く 84 USERID_PATH = '/html/body/div[3]/div[2]/div/article/header/div[2]/div[1]/div[1]/h2' 85 userids=[] 86 userid_lists = driver.find_elements_by_xpath(USERID_PATH) 87 for userid_list in userid_lists: 88 userid = userid_list.text 89 userids.append(userid) 90 print(userid) 91 time.sleep(random.randint(3,8)) 92 round_page = driver.find_element_by_css_selector(NEXT_PAGE_SELECTOR) 93 round_page.click() 94 time.sleep(random.randint(3,8)) 95 96 97
実行環境(FW/ツールのバージョンなど)
python 3.7
Jupyter notebook
Selenium
回答2件
あなたの回答
tips
プレビュー