3
0

WebCookiePool.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import json
  2. import sys
  3. import requests
  4. import re,execjs
  5. sys.path.append('/app/spiders/sword_feapder/FworkSpider')
  6. # from utils.cookie_pool import PageCookiePool
  7. from feapder.utils.webdriver import WebDriver
  8. from feapder.utils.log import log
  9. from untils.cookie_pool import PageCookiePool
  10. class WebCookiePool(PageCookiePool):
  11. def __init__(self, redis_key, page_url=None,cookie_key=None,
  12. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs):
  13. super(WebCookiePool, self).__init__(redis_key, page_url=None,
  14. min_cookies=10000, must_contained_keys=(), keep_alive=False, **kwargs)
  15. self.page_url = page_url
  16. self.cookie_key = cookie_key
  17. self._kwargs = kwargs
  18. self._kwargs.setdefault("load_images", False)
  19. self._kwargs.setdefault("headless", True)
  20. self._kwargs.setdefault("driver_type", "FIREFOX")
  21. def create_cookie(self):
  22. with WebDriver(**self._kwargs) as driver_pool:
  23. import time
  24. # time.sleep(1111)
  25. try:
  26. # driver_pool = self.driver_pool.get()
  27. driver_pool.get(self.page_url)
  28. count = 0
  29. while self.cookie_key not in driver_pool.cookies.keys():
  30. time.sleep(1)
  31. count+=1
  32. if count>=30:
  33. return
  34. cookies = driver_pool.cookies
  35. return cookies
  36. except Exception as e:
  37. log.error(f"获取cookie失败,{e}")
  38. if __name__ == '__main__':
  39. for i in range(10):
  40. print(f'开始第{i+1}次获取cookie')
  41. if i%3==0:
  42. 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()
  43. elif i%3==1:
  44. WebCookiePool(redis_key='gd2cookie',cookie_key='locale',page_url="https://www.jianshu.com/p/4c5bc85fc3fd").create_cookie()
  45. else:
  46. WebCookiePool(redis_key='gd3cookie',cookie_key='cna',page_url="https://docs-next.crawlab.cn/zh/guide/installation/docker.html#%E5%A4%96%E9%83%A8-mongodb").create_cookie()