def get_favo_user_list(driver, set_reach): try: # 格納用 user_urls = set([]) # 取得するループ while(True): # ユーザーのURLを取得 xpath = '/html/body/div[6]/div/div/div[2]/div/div/div[1]' elm = es.get_elm_by_xpath(driver, xpath) url_elm = elm.find_element_by_tag_name('a') user_url = url_elm.get_attribute('href') user_urls.add(user_url) # リーチ数分取得したらループから抜ける if(len(user_urls) >= set_reach): break # 1つ分スクロール elm_height = elm.size["height"] selector = 'body > div.RnEpo.Yx5HN > div > div > div.Igw0E.IwRSH.eGOV_.vwCYk.i0EQd > div' es.scroll(driver, selector, elm_height) es.wait(0.1, 0.1) return user_urls except: function = sys._getframe().f_code.co_name message = 'いいねするユーザーリストの取得に失敗しました。' es.notice_error(module, function, message)
def al_release_follow(driver, profile_url, release_min, release_follow): # profile_url:プロフィールのURL # release_min:これ以下のフォロー数だと、解除しない # release_follow:フォローの解除数 try: # プロフィールに遷移(1回で移動できない時があるから、2回移動) for i in range(2): driver.get(profile_url) es.wait() # フォロー数取得 follows = get_follow(driver) # フォロー解除するかどうかの判別 if(follows > release_min): # フォロー中のリスト表示 display_follow(driver) # 一番下までスクロール selector = 'body > div.RnEpo.Yx5HN > div > div > div.isgrP' # スクロールする要素のCSSセレクター item_xpath = [ # 取り得るXpath '/html/body/div[5]/div/div/div[2]/ul/div/li[1]/div', '/html/body/div[4]/div/div/div[2]/ul/div/li[1]/div' ] scroll_item = es.get_elm_by_xpaths(driver, item_xpath) # スクロールする要素 scroll_height = scroll_item.size['height'] # 一回分のスクロール量取得 for i in range(follows): # スクロール es.scroll(driver, selector, scroll_height) es.wait(0.1, 0.1) # フォロー解除ボタンの要素を取得 xpaths = [ '/html/body/div[4]/div/div/div[2]/ul/div/li/div/div[2]/button', '/html/body/div[5]/div/div/div[2]/ul/div/li/div/div[2]/button' ] elms = es.get_elms_by_xpaths(driver, xpaths) # フォロー解除のループ for i, elm in enumerate(reversed(elms)): # 解除数に到達したらループ終了 if(i >= release_follow): break elm.click() # フォロー中ボタンクリック es.wait(1) # フォローをやめるボタンをクリック release_xpaths = [ '/html/body/div[5]/div/div/div/div[3]/button[1]', '/html/body/div[6]/div/div/div/div[3]/button[1]' ] release_elm = es.get_elm_by_xpaths(driver, release_xpaths) release_elm.click() es.wait(1) # エラー時の動作 except: function = sys._getframe().f_code.co_name message = 'フォロー解除中にエラーが起きました。' es.notice_error(module, function, message)