From 5111e8288f412c690cd306d349835b5311d35edf Mon Sep 17 00:00:00 2001 From: work Date: Wed, 8 Apr 2026 16:02:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=82=B9=E8=B5=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- spider/task.py | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/spider/task.py b/spider/task.py index 1cb7546..228ae9b 100644 --- a/spider/task.py +++ b/spider/task.py @@ -270,7 +270,8 @@ def check_account_status(page, cookies): # 判断是否需要运行cookies页面 if "flow=user_cookie_choice_v2&source=pft_user_cookie_choice" in page.url: - allow_cookies = page.query_selector('//div[@role="dialog"]/div/div/div/div/div[3]/div/div/div[1]/div[1]/div/div') + allow_cookies = page.query_selector( + '//div[@role="dialog"]/div/div/div/div/div[3]/div/div/div[1]/div[1]/div/div') if allow_cookies is None: raise OperationFailed("允许cookies设置点击失败") allow_cookies.click() @@ -294,6 +295,30 @@ lock = RLock() login_semaphore = threading.Semaphore(2) +def is_post_liked_in_dialog(page): + """判断弹窗内的帖子是否已点赞""" + + # 检查是否存在已点赞按钮 + remove_like_button = page.query_selector('[role="dialog"] div[aria-label="Remove Like"]') + + if remove_like_button: + # 获取点赞数 + like_count_elem = remove_like_button.query_selector('..').query_selector('span[dir="auto"]') + like_count = like_count_elem.inner_text() if like_count_elem else "未知" + print(f"帖子已点赞,点赞数:{like_count}") + return True + else: + # 检查是否存在未点赞按钮 + like_button = page.query_selector('[role="dialog"] div[aria-label="Like"]') + if like_button: + like_count_elem = like_button.query_selector('..').query_selector('span[dir="auto"]') + like_count = like_count_elem.inner_text() if like_count_elem else "0" + print(f"帖子未点赞,点赞数:{like_count}") + return False, like_count + else: + print("未找到点赞按钮") + return False + def playwright_like(cookies, target_url): path = os.path.join(BASE_PATH, 'chrome', '130-0008', 'chrome.exe') with lock: @@ -317,14 +342,11 @@ def playwright_like(cookies, target_url): page = context.new_page() check_account_status(page, parse_cookies(cookies)) - url = 'https://facebook.com' try: - - retry_goto(page, url) time.sleep(random.randint(3, 10)) if 'permalink.php?story_fbid' in target_url or '/permalink/' in target_url or '/posts/' in target_url: # 文字或图片类型 - button_xpath = '//*[@role="dialog"]//span[text()="Like" or @data-ad-rendering-role="like_button"]' + button_xpath = '//*[@role="dialog"]//div[text()="Like" or @data-ad-rendering-role="like_button"]' elif 'watch/?v' in target_url or '/videos/' in target_url: # 视频类型, 视频类型, button_xpath = '//span[@data-ad-rendering-role="like_button"][1]' @@ -343,9 +365,9 @@ def playwright_like(cookies, target_url): # 滚动到按钮所在处 button.scroll_into_view_if_needed() # 判断按钮是否已经点过赞 - if button.get_attribute('style') == "" or button.get_attribute('style') is None: + if is_post_liked_in_dialog(page): # 未点过赞进行点赞操作 - button.click(force=True) + button.evaluate("element => element.click()") else: raise OperationFailed("未找到点赞按钮") time.sleep(10) @@ -1254,8 +1276,10 @@ def playwright_share(cookies, target_url, content): if __name__ == '__main__': - cookies = "c_user=61587708421547; xs=32:70ZigyqtoCfQ0w:2:1770569737:-1:-1; oo=v13:1770569731; datr=A8CIafB8DHVOhB7TfY9GWAIG" - print(playwright_check_account_cookies(cookies)) + cookies = {"c_user": "61580731829951", "datr": "YAG0acMh3dBPSWnm3cJbRXi3", + "fr": "0R0Vyl5VWkjupCB9r.AWev5P-8DfHd85RU3mkQYZQCOhBiJFmEB_v36B87pqndwSE9tDc.BptAHA..AAA.0.0.BptAHA.AWf5e5v7gJOW95xdm38EkmtRYl0", + "xs": "27:0Z_9KYAMCws04A:2:1773404616:-1:-1"} + # print(playwright_check_account_cookies(cookies)) # print(playwright_set_user_profile(cookies, "61584735094876", "Inaaya", "Inaaya", # "facebook/user_upload/0196f098-851c-7810-b2aa-0833a0a7b09d/8c428558-2d90-4f45-baa3-a25f8a654b5c.png")) # cookies = '{"locale": "en_US", "datr": "ZnGnaBBx0yN7pov19-8_A6Gr", "sb": "ZnGnaDQicDSsVuevkudqio1J", "m_pixel_ratio": "1", "wd": "1920x1080", "test_cookie": "CheckForPermission", "c_user": "61579364283503", "xs": "34%3AdWeZoaWzFrtdVQ%3A2%3A1755804022%3A-1%3A-1", "oo": "v1%7C3%3A1755804031"}' @@ -1267,7 +1291,8 @@ if __name__ == '__main__': # post(cookies, 'cs2025') # like(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5') # comment(cookies, 'ZmVlZGJhY2s6MTIyMTA5NjE0NjU0NzkzNzc5', 'game la', 'xzpq.mp4') - # playwright_like(cookies, 'https://www.facebook.com/watch/?v=1007800324567828') + playwright_like(cookies, + 'https://www.facebook.com/permalink.php?story_fbid=pfbid026dQik7NyujSGd2rjWyTKbQVw2CVM5BeJEP9sYxo7K5TBGhWZ4sUfs4gMoSLKq2mJl&id=61575372223339') # print(playwright_post(cookies, '1111', image_key="1.mp4")) # playwright_post(cookies, '2025-3-26~like', "") # playwright_comment(