示例#1
0
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)
示例#2
0
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)
示例#3
0
# 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)