import json import sys import time import requests import re,execjs from selenium.webdriver import ActionChains sys.path.append('/mnt/topic_spider/zgztb_cookie/FworkSpider')# from feapder.utils.webdriver import WebDriver from feapder.utils.log import log from FworkSpider.untils.cookie_pool import PageCookiePool from feapder.utils import tools from feapder.utils.redis_lock import RedisLock class WebCookiePool(PageCookiePool): def __init__(self, redis_key, page_url=None,cookie_key=None, min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs): super(WebCookiePool, self).__init__(redis_key, page_url=None, min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs) self.page_url = page_url self.cookie_key = cookie_key self._kwargs = kwargs self._kwargs.setdefault("load_images", False) self._kwargs.setdefault("headless", True) # self._kwargs.setdefault("executable_path", "D:\\geckodriver.exe") self._kwargs.setdefault("driver_type", "FIREFOX") self.proxies = None def create_cookies(self,proxies): # print('此时代理ip使用的是:',self.proxies) self._kwargs.setdefault("proxy", proxies) with WebDriver(**self._kwargs) as driver_pool: import time # print(driver_pool.page_source) try: # driver_pool = self.driver_pool.get() js = "return window.navigator.webdriver" result = driver_pool.execute_script(js) print(' window.navigator.webdriver >>> ', result) driver_pool.get(self.page_url) # print(driver_pool.page_source) # import pdb # pdb.set_trace() time.sleep(3) for i in range(4): try: slider = driver_pool.find_element_by_xpath("//span[contains(@class, 'nc_iconfont btn_slide')]") if slider.is_displayed(): # 点击并且不松开鼠标 ActionChains(driver_pool).click_and_hold(on_element=slider).perform() # 往右边移动258个位置 ActionChains(driver_pool).move_by_offset(xoffset=258, yoffset=0).perform() # 松开鼠标 ActionChains(driver_pool).pause(1).release().perform() except Exception as e: print(e) time.sleep(10) if 'nc_iconfont btn_slide' in driver_pool.page_source: continue else: break # print(driver_pool.page_source) cookies = driver_pool.cookies return cookies except Exception as e: log.error(f"获取cookie失败,{e}") if __name__ == '__main__': # for i in range(1): cookies =WebCookiePool(redis_key='gdcookie',page_url="http://www.user-agent.cn/").create_cookies("socks5://36.7.252.15:8860") print(cookies)