웹 페이지 파충류 의 쿠키 자동 획득 및 만 료 자동 업데이트 실현 방법
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
...
총결산위 에서 말 한 것 은 소 편 이 소개 한 홈 페이지 파충류 의 쿠키 자동 획득 및 기한 이 지나 면 자동 으로 업데이트 되 는 실현 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(1) 분포 식 파충류 Scrapy 는 어떻게 해 야 하나 요 - 설치Scrapy 의 설치 에 대해 인터넷 을 샅 샅 이 뒤 졌 습 니 다. 하나씩 설치 하 는 것 은 솔직히 좀 번 거 롭 습 니 다. 그럼 원 키 로 설치 한 것 이 있 습 니까?답 은 분명히 있 습 니 다. 다음은 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.