Python——通过用户cookies访问微博首页
通过用户cookies访问微博首页
1.登录微博
self.driver.delete_all_cookies() # 删除cookies self.driver.get(self.url)time.sleep(2)user = self.wait.until(EC.presence_of_element_located((By.ID,'loginName')))pwd = self.wait.until(EC.presence_of_element_located((By.ID, 'loginPassword')))submit = self.wait.until(EC.presence_of_element_located((By.ID, 'loginAction')))user.send_keys(self.username)time.sleep(1)pwd.send_keys(self.password)time.sleep(1)submit.click()time.sleep(5)
2.获取cooikes,保存json文件
cookies = self.driver.get_cookies() cookies_dict = {} for item in cookies:cookies_dict[item.get('name')] = item.get('value') with open('sina_cookies.TXT','w',encoding='utf-8') as f:f.write(json.dumps(cookies_dict, ensure_ascii='False',indent=4))
3..读取json文件,获得cooikes,访问主页
with open('sina_cookies.TXT','r',encoding='utf-8') as f:cooikes_dict = json.loads(f.read()) response = requests.get('https://weibo.cn/', cookies = cookies_dict, timeout=5, allow_redirects=False)if response.status_code == 200:print('用户cookies有效')
4.详细代码
#!/usr/local/bin/python3 # -*- coding: utf-8 -*- # @Time : 2018/4/26 0:24 # @Author : hyang # @File : WeiboCooikes.py # @Software: import time import json from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait # 等待元素加载的 from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException, NoSuchElementException from selenium.webdriver.common.by import By import requestsclass WeiboCooikesLogin(object):"""通过cookies访问微博"""def __init__(self,username, password):self.url = 'https://passport.weibo.cn/signin/login'self.driver = webdriver.Chrome()self.driver.maximize_window() # 最大化窗口self.wait = WebDriverWait(self.driver, 6)self.username = usernameself.password = passworddef __del__(self):"""关闭浏览器:return: """print('close browser')self.driver.close()def open_url(self):"""打开url登录微博:return: """self.driver.delete_all_cookies() # 删除cookies self.driver.get(self.url)time.sleep(2)user = self.wait.until(EC.presence_of_element_located((By.ID,'loginName')))pwd = self.wait.until(EC.presence_of_element_located((By.ID, 'loginPassword')))submit = self.wait.until(EC.presence_of_element_located((By.ID, 'loginAction')))user.send_keys(self.username)time.sleep(1)pwd.send_keys(self.password)time.sleep(1)submit.click()time.sleep(5)def password_error(self):"""判断用户名密码错误:return: """try:return self.wait.until(EC.text_to_be_present_in_element((By.ID,'errorMsg'),'用户名或密码错误'))except TimeoutException as e:return Falsedef login_successful(self):"""获得登录成功标志:return: """try:return self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'drop-title')))except TimeoutException as e:return Falsedef process_cookies(self,cookies):"""处理cookies:param cookies: :return: """cookies_dict = {}for item in cookies:cookies_dict[item.get('name')] = item.get('value')return cookies_dictdef save_cookies(self,cookies_dict):"""保存cookies:param cookies_dict: :return: """with open('sina_cookies.TXT','w',encoding='utf-8') as f:f.write(json.dumps(cookies_dict, ensure_ascii='False',indent=4))def get_cookies_main(self):self.open_url()if self.password_error():print('用户名或密码错误')if self.login_successful():print('用户登录成功')cookies = self.driver.get_cookies()d = self.process_cookies(cookies)self.save_cookies(d)print('保存用户cookies成功')def get_cooikes(self):"""从文件中读取cookies:return: """with open('sina_cookies.TXT','r',encoding='utf-8') as f:cooikes_dict = json.loads(f.read())return cooikes_dictdef login_with_cookies(self, cookies_dict):"""通过cookies访问主页读取信息:param cookies_dict: :return: """time.sleep(2)response = requests.get('https://weibo.cn/', cookies = cookies_dict, timeout=5, allow_redirects=False)if response.status_code == 200:print('用户cookies有效')time.sleep(1)if '我的首页' in response.text:print('通过cookies登录成功')def login_cookies_main(self):print('用户开始刷新主页!!')d = self.get_cooikes()print('读取用户cookies!!')self.login_with_cookies(d)print('通过cookies访问主页!!')if __name__ == '__main__':username = '908099665' # 新浪微博用户pwd = '111111' # 新浪微博用户密码wb = WeiboCooikesLogin(username, pwd)wb.get_cookies_main() # 得到cookieswb.login_cookies_main() # 用cookies访问主页
输出结果
转载于:https://www.cnblogs.com/xiao-apple36/p/8948817.html
Python——通过用户cookies访问微博首页相关推荐
- 用Python通过用户cookies访问微博首页
通过用户cookies访问微博首页 1.登录微博 2.获取cooikes,保存json文件 3..读取json文件,获得cooikes,访问主页 4.详细代码 输出结果
- python爬虫批量抓取新浪微博用户ID及用户信息、微博内容
老师给的任务,要对批量的微博文本进行舆情分析.第一步就是数据的抓取.在网上搜了一下大多是基于手机版网页(wap/cn)的爬虫,但是我在电脑上打不开这些网站. 由于自己也是网页小白,所以就参考着别人的代 ...
- Python扫码登录保存和验证cookies值——微博篇(五)
python实现扫码登录微博网页版 一.找到生成二维码链接地址 二.找到确认二维码链接地址 三.继续寻找相关链接地址获取登录信息 四.最后保存cookies值并进行验证是否有效或登录状态 完整代码 五 ...
- 利用cookies+requests包登陆微博,使用xpath抓取目标用户的用户信息、微博以及对应评论...
本文目的:介绍如何抓取微博内容,利用requests包+cookies实现登陆微博,lxml包的xpath语法解析网页,抓取目标内容. 所需python包:requests.lxml 皆使用pip安装 ...
- Python Scrapy框架爬取微博数据
-1.前言 最近导师接到了一个项目,要爬取社交网路的数据,其中有一部分是爬取微博,Twitter和Facebook.目前实现了微博部分.先写着. 整个工程是使用的python3.6+Scray框架+M ...
- 网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页
本文为学习笔记,整合课程内容以及下列文章: 其中,libcurl函数库常用字段解读部分: 参考博文:原文地址 作者:冬冬他哥哥 目录 Libcurl库简介 Libcurl等三方库的通用编译方法 三方库 ...
- Python包装用户指南(删减了讨论和新闻部分)
Python包装用户指南 欢迎使用Python Packaging用户指南,这是一系列教程和参考资料,可帮助您使用现代工具分发和安装Python包. 本指南由Python Packaging Auth ...
- python爬虫(一):模拟登陆微博
最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...
- Cookie获取用户的访问记录
使用Cookie技术 获取用户的访问记录 1.创建 虚拟数据 package com.oracleoaec.cookie;import java.util.HashMap;public class ...
最新文章
- javascript 获取光标所选中的内容并插入到另一个文本框中(兼容ie和ff)
- java的runtime类,java中Runtime类的简单应用
- C++经典面试题(最全,面中率最高)
- 16位汇编 int 10h和int 21h 显示字符串实例
- fastdfs上传文件报错
- WPF 基础控件之 GroupBox样式
- 信息学奥赛一本通 2051:【例3.1】偶数
- 33 计算机维修,33.计算机硬件检测维修与数据恢复竞赛规程(修改)全解.doc
- LeetCode(985)——查询后的偶数和(JavaScript)
- MOT with a hierachical single branch network
- psd imageset转换工具
- python教程pdf-python基础教程[高清][中文第2版].pdf
- MFC 解压7z文件
- 常见面试题及解答|计算机网络
- 前端解决:此图片来自微信公众平台未经允许不可引用
- 用RunASDate解决SAS 9.4许可证过期的问题
- 二进制十进制十六进制转换_二进制数制到十进制数制的转换
- UDS诊断系列介绍08-19服务
- 进入TP-Link路由器之后利用快捷键F12查看星号路由密码的方法
- 2012年02月12日
热门文章
- 每日问答【2020.03.17】
- LeetCode报错:runtime error: member access within null pointer of type ‘struct ListNode‘
- 入职第一天--随便说几句话
- C++与我的甜蜜第二天
- Java中的类变量和实例变量的区别
- 实现开启和关闭android移动网络(转)
- Qt元对象系统(Meta-Object)(四)、Moc源代码分析
- 用html5代码打出一个王字,王老师html零基础学习笔记第6课——-font-size+特殊字符...
- LOL英雄联盟赏金术士老鼠教学视频
- 抱歉,进程android.process.media,已停止运行的解决办法