123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- 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)
|