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 requests class 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 = username
self.password = password def __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 False def login_successful(self):
"""
获得登录成功标志
:return:
"""
try:
return self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'drop-title'))) except TimeoutException as e:
return False def process_cookies(self,cookies):
"""
处理cookies
:param cookies:
:return:
"""
cookies_dict = {}
for item in cookies:
cookies_dict[item.get('name')] = item.get('value')
return cookies_dict def 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_dict def 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 = '' # 新浪微博用户
pwd = '' # 新浪微博用户密码
wb = WeiboCooikesLogin(username, pwd)
wb.get_cookies_main() # 得到cookies
wb.login_cookies_main() # 用cookies访问主页
输出结果

Python——通过用户cookies访问微博首页的更多相关文章
- 利用cookies+requests包登陆微博,使用xpath抓取目标用户的用户信息、微博以及对应评论
本文目的:介绍如何抓取微博内容,利用requests包+cookies实现登陆微博,lxml包的xpath语法解析网页,抓取目标内容. 所需python包:requests.lxml 皆使用pip安装 ...
- python接入微博第三方API之2接入用户登录和微博发布
python接入微博第三方API之2接入用户登录和微博发布 # coding=utf-8 import requests import json import MySQLdb from datetim ...
- (26)基于cookie的登陆认证(写入cookie、删除cookie、登陆后所有域下的网页都可访问、登陆成功跳转至用户开始访问的页面、使用装饰器完成所有页面的登陆认证)
获取cookie request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age ...
- Servlet—Cookie(显示用户上次访问时间、显示商品浏览历史)
1 . 什么是会话? 会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 1.1 会话过程中要解决的一些问题? 每个用户在使用浏览器 ...
- 微博API怎么爬取其它未授权用户的微博/怎么爬取指定用户公布的微博
获取某个用户最新发表的微博列表:http://open.weibo.com/wiki/2/statuses/user_timeline 原接口已经被封.很多人都在问怎么获取指定用户的微博,于是写这篇B ...
- Python 中的属性访问与描述符
在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个name属性,那便可以使用foo.name对此属性进行访问.一般而言,点(. ...
- 简单的Cooki案例——记录用户上次访问该网页的时间
功能: 帮助网站实现提示客户端计算机上次访问网站的时间 实现原理: 将每一个会话作为一次访问过程,将每次会话的开始时间作为每次访问网站的时间,然后将这个时间以Cookie的形式存储到客户端的计算机中, ...
- Python中的属性访问与描述符
Python中的属性访问与描述符 请给作者点赞--> 原文链接 在Python中,对于一个对象的属性访问,我们一般采用的是点(.)属性运算符进行操作.例如,有一个类实例对象foo,它有一个nam ...
- Python 3.6 抓取微博m站数据
Python 3.6 抓取微博m站数据 2019.05.01 更新内容 containerid 可以通过 "107603" + user_id 组装得到,无需请求个人信息获取: 优 ...
随机推荐
- CentOS 特殊变量($0、$1、$2、 $?、 $# 、$@、 $*)
名称 说明 $0 脚本名称 $1-9 脚本执行时的参数1到参数9 $? 脚本的返回值 $# 脚本执行时,输入的参数的个数 $@ 输入的参数的具体内容(将输入的参数作为一个多个对象,即是所有参数的一个列 ...
- 2018 宁夏省赛 F. Moving On
题目链接 https://nanti.jisuanke.com/t/28406 大意是 有n(<=200)个城市,城市间有路(Input给了邻接矩阵) 每个城市有一个危险值,然后是q(2e4) ...
- 20175234 2018-2019-2 《Java程序设计》第三周学习总结
20175234 2018-2019-2 <Java程序设计>第三周学习总结 教材学习内容重难点总结 关于驼峰式的认识 为了增加程序的可读性,除了在代码之间增加注释之外,程序员大都把代码中 ...
- PHP开发——进制转换
常用进制 l 10进制:有10个基本数,分别为0.1.2.3.4.5.6.7.8.9,运算规则”逢10进1”: l 8进制:有8个基本数,分别为0.1.2.3.4.5.6.7,运算规则”逢8进1” ...
- 对hadoop namenode -format执行过程的探究
引言 本文出于一个疑问:hadoop namenode -format到底在我的linux系统里面做了些什么? 步骤 第1个文件bin/hadoop Hadoop脚本位于hadoop根目录下的bi ...
- python 数据可视化(matplotlib)
matpotlib 官网 :https://matplotlib.org/index.html matplotlib 可视化示例:https://matplotlib.org/gallery/inde ...
- Elasticsearch下安装ik分词器
安装ik分词器(必须安装maven) 上传相应jar包 解压到相应目录 unzip elasticsearch-analysis-ik-master.zip(zip包) cp -r elasticse ...
- Django的学习进阶(一)—— 外键的使用
一.描述 在利用django做网络开发的时候我们会遇到一个问题就是,我们建立了多张数据表,但是多张数据表中的内容是不一样的,但是之间有着联系比如: 我有两张表,一张是记录歌曲信息的内容,一张是对歌曲操 ...
- mysql的部署
mysql在linux系统中的部署: 二进制包安装软件: 第一步:下载二进制软件,上传到服务器 www.mysql.com mkdir /server/tools -y cd /server/tool ...
- w3wp.exe(IIS ) CPU 占用 100% 的常见原因
引起 w3wp.exe(IIS ) Cpu 占用 100% 的常见原因如下: 1. Web 访问量大,从而服务器压力大而引起的 2. 动态页面(.aspx)的程序逻辑复杂程度 3. 页面程序中有死循环 ...