Cette fois, je vais vous expliquer comment obtenir et mettre à jour automatiquement les cookies Quelles sont les précautions pour obtenir et mettre à jour automatiquement les cookies Ce qui suit est un cas pratique, allons-y ? jetez un oeil ensemble.
De nombreuses informations sur les sites de réseaux sociaux nécessitent une connexion pour les obtenir. Prenez Weibo comme exemple. Sans vous connecter, vous ne pouvez voir que les dix principales publications Weibo des grands Vs. Pour rester connectéstatut, les cookies sont requis. Prenons l'exemple de la connexion à www.weibo.cn :
En analysant la demande de retour des en-têtes de la console, vous verrez que weibo.cn dispose de plusieurs ensembles de cookies renvoyés.
Étapes de mise en œuvre :
1. Utilisez Selenium pour vous connecter automatiquement afin d'obtenir des cookies et de les enregistrer dans des fichiers
; 2. Lisez le cookie et comparez la durée de validité du cookie. S'il expire, effectuez à nouveau l'étape 1
. 3. Lorsque vous demandez d'autres pages Web, remplissez le cookie pour conserver le statut de connexion.
1. Obtenez des cookies en ligne
Utilisez Selenium + PhantomJS pour simuler la connexion au navigateur et obtenir des cookies
Il existe généralement plusieurs cookies et les cookies sont stockés un par un dans des fichiers portant le suffixe .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. Récupérez les cookies du fichier
Parcourez les fichiers se terminant par .weibo, c'est-à-dire les fichiers cookies, à partir du répertoire actuel. Utilisez pickle pour le décompresser dans un dict, comparez la valeur d'expiration avec l'heure actuelle et renvoyez vide s'il expire
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. Si le cookie mis en cache expire, récupérez à nouveau le cookie du réseau
def get_cookie(): cookie_dict = get_cookie_from_cache() if not cookie_dict: cookie_dict = get_cookie_from_network() return cookie_dict
4. Utilisez des cookies pour demander d'autres pages d'accueil Weibo
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 解析网页 ...
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois PHP. !
Lecture recommandée :
Explication détaillée des étapes permettant à Vue d'utiliser la bibliothèque de fonctions xe-utils
Actualisations de Vue après avoir emballé le projet Comment gérer l'affichage 404
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!