WebCookiePool.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import json
  2. import sys
  3. import requests
  4. import re,execjs
  5. sys.path.append('C:/Users/topnet/Desktop/crawlab_feader/FworkSpider')
  6. sys.path.append('/app/spiders/sword_feapder/FworkSpider')
  7. # from utils.cookie_pool import PageCookiePool
  8. from feapder.utils.webdriver import WebDriverPool
  9. from feapder.utils.log import log
  10. from FworkSpider.untils.cookie_pool import PageCookiePool
  11. class WebCookiePool(PageCookiePool):
  12. def __init__(self, redis_key, page_url=None,cookie_key=None,
  13. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs):
  14. super(WebCookiePool, self).__init__(redis_key, page_url=None,
  15. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs)
  16. self.page_url = page_url
  17. self.cookie_key = cookie_key
  18. self._kwargs = kwargs
  19. self._kwargs.setdefault("load_images", False)
  20. self._kwargs.setdefault("headless", True)
  21. self._kwargs.setdefault("executable_path", "D:\\geckodriver.exe")
  22. self._kwargs.setdefault("driver_type", "FIREFOX")
  23. def create_cookie(self):
  24. with WebDriverPool(**self._kwargs).get() as driver_pool:
  25. # driver = driver_pool.driver
  26. driver_pool.get(self.page_url)
  27. import time
  28. try:
  29. count = 0
  30. while self.cookie_key not in driver_pool.cookies.keys():
  31. time.sleep(1)
  32. count+=1
  33. if count>=30:
  34. # driver_pool.close()
  35. return
  36. cookies = driver_pool.cookies
  37. # driver_pool.close()
  38. return cookies
  39. # driver_pool.close()
  40. except Exception as e:
  41. log.error(f"获取cookie失败,{e}")
  42. if __name__ == '__main__':
  43. WebCookiePool(redis_key='gdcookie',cookie_key='SUB',page_url="https://weibo.com/p/1005051203448454/home?from=page_100505_profile&wvr=6&mod=data&is_all=1#place").create_cookie()