def get_favo_from_posts(driver, posts): try: # 投稿の情報を取得するループ post_info = [] for ind,post in enumerate(posts): # 投稿にホバー es.hover(driver, post) es.wait(0.5, 0.1) # いいね数取得 xpath_favo = 'a/div/ul/li[1]/span[1]' elm = es.get_elms_by_xpath(post, xpath_favo)[0] post_info.append([ind, elm.text]) # [インデックス番号, いいね数] es.wait(0.1) # 21個目で終了(それ以上だとログインを強制される)(ログインしてると問題ない) # if(ind>19): # break return post_info except: function = sys._getframe().f_code.co_name message = '投稿のいいね数取得に失敗しました。' es.notice_error(module, function, message)
def click_first_post(driver): try: xpath = '/html/body/div/section/main/div/div/article/div[1]/div/div[1]/div[1]/a' elm = es.get_elms_by_xpath(driver, xpath)[0] elm.click() es.wait(5) except: function = sys._getframe().f_code.co_name message = '1つ目の投稿のクリックに失敗しました。' es.notice_error(module, function, message)
# In[ ]: # ループ for rival in rivals: # アカウントのプロフィール画面に遷移 driver.get(rival[0]) es.wait() # 下のログインを促すバナーを削除 ig.delete_login_banner(driver) # 投稿一覧の要素 xpath = "/html/body/div[1]/section/main/div/div/article/div[1]/div/div/div" posts = es.get_elms_by_xpath(driver, xpath) # 投稿のインデックス番号といいね数を取得 post_info = ig.get_favo_from_posts(driver, posts) post_info = sorted(post_info, reverse=True, key=lambda x: x[1]) #[1]に注目してソート post_info = post_info[0:2] # エンゲージメントの高い5つに絞る # 投稿のURLを格納 for val in post_info: # インデックスから投稿の要素を取得 ind = val[0] post = posts[ind] # 投稿のURLを取得 url = ig.get_post_url_from_post_list(post)