웹 페이지 파충류 의 쿠키 자동 획득 및 만 료 자동 업데이트 실현 방법

3751 단어 파충cookie
본 고 는 쿠키 의 자동 획득 과 쿠키 가 만 료 되면 자동 으로 업 데 이 트 됩 니 다.
SNS 의 많은 정 보 는 로그 인해 야 얻 을 수 있 는데,웨 이 보 의 경우 계 정 에 로그 인하 지 않 고 빅 브 이의 상위 10 개 웨 이 보 만 볼 수 있다.로그 인 상 태 를 유지 하려 면 쿠키 를 사용 해 야 합 니 다.로그 인www.weibo.cn예 를 들 면:
chrome 에 입력:http://login.weibo.cn/login/

콘 솔 의 Headers 요청 을 분석 하면 weibo.cn 에 되 돌아 오 는 쿠키 가 몇 개 있 습 니 다.
실현 절차:
1.selenium 자동 로그 인 으로 쿠키 를 가 져 와 파일 에 저장 합 니 다.
2.쿠키 를 읽 고 쿠키 의 유효기간 을 비교 하 며 기한 이 지나 면 다시 절 차 를 실행 합 니 다.
3.다른 웹 페이지 를 요청 할 때 쿠키 를 입력 하여 로그 인 상 태 를 유지 합 니 다.
1,온라인 쿠키 획득
selenium+PhantomJS 아 날로 그 브 라 우 저 로 로그 인하 여 쿠키 가 져 오기;
cookies 는 보통 여러 개 로 쿠키 를'weibo 접미사 파일'에 하나씩 저장 합 니 다.

def get_cookie_from_network():
 from selenium import webdriver
 url_login = 'http://login.weibo.cn/login/' 
 driver = webdriver.PhantomJS()
 driver.get(url_login)
 driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') #         
 driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') #         
 driver.find_element_by_xpath('//input[@type="submit"]').click() #     
 #    cookie  
 cookie_list = driver.get_cookies()
 print cookie_list
 cookie_dict = {}
 for cookie in cookie_list:
  #    
  f = open(cookie['name']+'.weibo','w')
  pickle.dump(cookie, f)
  f.close()
  if cookie.has_key('name') and cookie.has_key('value'):
   cookie_dict[cookie['name']] = cookie['value']
 return cookie_dict
2,파일 에서 쿠키 가 져 오기
현재 디 렉 터 리 에서'weibo'로 끝 나 는 파일,즉 쿠키 파일 을 옮 겨 다 닙 니 다.pickle 로 dict 로 압축 을 풀 고 expiry 값 과 현재 시간 을 비교 합 니 다.기한 이 지나 면 비어 있 습 니 다.

def get_cookie_from_cache():
 cookie_dict = {}
 for parent, dirnames, filenames in os.walk('./'):
  for filename in filenames:
   if filename.endswith('.weibo'):
    print filename
    with open(self.dir_temp + filename, 'r') as f:
     d = pickle.load(f)
     if d.has_key('name') and d.has_key('value') and d.has_key('expiry'):
      expiry_date = int(d['expiry'])
      if expiry_date > (int)(time.time()):
       cookie_dict[d['name']] = d['value']
      else:
       return {}
 return cookie_dict
3.캐 시 쿠키 가 만 료 되면 네트워크 에서 쿠키 를 다시 가 져 옵 니 다.

def get_cookie():
 cookie_dict = get_cookie_from_cache()
 if not cookie_dict:
  cookie_dict = get_cookie_from_network()
 return cookie_dict
4,쿠키 를 가지 고 웨 이 보 다른 홈 페이지 요청

def get_weibo_list(self, user_id):
 import requests
 from bs4 import BeautifulSoup as bs
 cookdic = get_cookie()
 url = 'http://weibo.cn/stocknews88' 
 headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36'}
 timeout = 5
 r = requests.get(url, headers=headers, cookies=cookdic,timeout=timeout)
 soup = bs(r.text, 'lxml')
 ...
 #  BeautifulSoup     
 ...
총결산
위 에서 말 한 것 은 소 편 이 소개 한 홈 페이지 파충류 의 쿠키 자동 획득 및 기한 이 지나 면 자동 으로 업데이트 되 는 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기