通过用户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访问微博首页相关推荐

  1. 用Python通过用户cookies访问微博首页

    通过用户cookies访问微博首页 1.登录微博 2.获取cooikes,保存json文件 3..读取json文件,获得cooikes,访问主页 4.详细代码 输出结果

  2. python爬虫批量抓取新浪微博用户ID及用户信息、微博内容

    老师给的任务,要对批量的微博文本进行舆情分析.第一步就是数据的抓取.在网上搜了一下大多是基于手机版网页(wap/cn)的爬虫,但是我在电脑上打不开这些网站. 由于自己也是网页小白,所以就参考着别人的代 ...

  3. Python扫码登录保存和验证cookies值——微博篇(五)

    python实现扫码登录微博网页版 一.找到生成二维码链接地址 二.找到确认二维码链接地址 三.继续寻找相关链接地址获取登录信息 四.最后保存cookies值并进行验证是否有效或登录状态 完整代码 五 ...

  4. 利用cookies+requests包登陆微博,使用xpath抓取目标用户的用户信息、微博以及对应评论...

    本文目的:介绍如何抓取微博内容,利用requests包+cookies实现登陆微博,lxml包的xpath语法解析网页,抓取目标内容. 所需python包:requests.lxml 皆使用pip安装 ...

  5. Python Scrapy框架爬取微博数据

    -1.前言 最近导师接到了一个项目,要爬取社交网路的数据,其中有一部分是爬取微博,Twitter和Facebook.目前实现了微博部分.先写着. 整个工程是使用的python3.6+Scray框架+M ...

  6. 网络编程知识预备(5) ——libcurl库简介及其编程访问百度首页

    本文为学习笔记,整合课程内容以及下列文章: 其中,libcurl函数库常用字段解读部分: 参考博文:原文地址 作者:冬冬他哥哥 目录 Libcurl库简介 Libcurl等三方库的通用编译方法 三方库 ...

  7. Python包装用户指南(删减了讨论和新闻部分)

    Python包装用户指南 欢迎使用Python Packaging用户指南,这是一系列教程和参考资料,可帮助您使用现代工具分发和安装Python包. 本指南由Python Packaging Auth ...

  8. python爬虫(一):模拟登陆微博

    最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...

  9. Cookie获取用户的访问记录

    使用Cookie技术  获取用户的访问记录 1.创建 虚拟数据 package com.oracleoaec.cookie;import java.util.HashMap;public class ...

最新文章

  1. javascript 获取光标所选中的内容并插入到另一个文本框中(兼容ie和ff)
  2. java的runtime类,java中Runtime类的简单应用
  3. C++经典面试题(最全,面中率最高)
  4. 16位汇编 int 10h和int 21h 显示字符串实例
  5. fastdfs上传文件报错
  6. WPF 基础控件之 GroupBox样式
  7. 信息学奥赛一本通 2051:【例3.1】偶数
  8. 33 计算机维修,33.计算机硬件检测维修与数据恢复竞赛规程(修改)全解.doc
  9. LeetCode(985)——查询后的偶数和(JavaScript)
  10. MOT with a hierachical single branch network
  11. psd imageset转换工具
  12. python教程pdf-python基础教程[高清][中文第2版].pdf
  13. MFC 解压7z文件
  14. 常见面试题及解答|计算机网络
  15. 前端解决:此图片来自微信公众平台未经允许不可引用
  16. 用RunASDate解决SAS 9.4许可证过期的问题
  17. 二进制十进制十六进制转换_二进制数制到十进制数制的转换
  18. UDS诊断系列介绍08-19服务
  19. 进入TP-Link路由器之后利用快捷键F12查看星号路由密码的方法
  20. 2012年02月12日

热门文章

  1. 每日问答【2020.03.17】
  2. LeetCode报错:runtime error: member access within null pointer of type ‘struct ListNode‘
  3. 入职第一天--随便说几句话
  4. C++与我的甜蜜第二天
  5. Java中的类变量和实例变量的区别
  6. 实现开启和关闭android移动网络(转)
  7. Qt元对象系统(Meta-Object)(四)、Moc源代码分析
  8. 用html5代码打出一个王字,王老师html零基础学习笔记第6课——-font-size+特殊字符...
  9. LOL英雄联盟赏金术士老鼠教学视频
  10. 抱歉,进程android.process.media,已停止运行的解决办法