研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间。自己也是练习很少,短时间成功不了。所以走了个捷径。

Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接、输入表单,点击按钮提交等。所以我们使用它可以很方便的来登录。

但是作为新手还是多多分析,尽量少用这个,以便提高自己的技术。在研究几天,在写一个自己满意的。

import time
# import random
from bs4 import BeautifulSoup
from selenium import webdriver class Tencent():
def __init__(self, qq, pwd, url):
# PhantomJS设置了环境变量,所以可以直接用
self.driver = webdriver.PhantomJS()
self.qq = qq
self.pwd = pwd
self.url = url def login(self):
'''登录'''
self.driver.get(self.url)
time.sleep(2)
# 登录界面
try:
self.driver.find_element_by_class_name('mod-entry-login').click()
time.sleep(1)
self.driver.find_element_by_class_name('btns-enter-qq').click()
# 登录表单在页面框架中,切换到该框架
self.driver.switch_to.frame('login_frame_qq')
#time.sleep(random.random())
self.driver.find_element_by_id('switcher_plogin').click()
time.sleep(1)
self.driver.find_element_by_id('p_low_login_enable').click()
# time.sleep(random.random())
# 账号与密码
self.driver.find_element_by_id('u').clear()
self.driver.find_element_by_id('u').send_keys(self.qq)
# time.sleep(random.random())
self.driver.find_element_by_id('p').clear()
self.driver.find_element_by_id('p').send_keys(self.pwd)
# 登录界面截图
self.driver.save_screenshot('login.png')
# 点击登录
self.driver.find_element_by_id('login_button').click()
time.sleep(2)
# 登录成功截图
self.driver.save_screenshot('success.png')
# 全部订单页面
self.driver.get("https://ke.qq.com/user/index/index.html#sid=signup")
# 全部订单界面截图 self.driver.save_screenshot('all_course.png')
except:
print('出错误了,请重试') else:
self.extract()
finally:
self.driver.quit() def extract(self):
while True:
time.sleep(1)
soup = BeautifulSoup(self.driver.page_source, 'lxml') course_list = soup.select('.bm-menu-info-top a')
# print(course_list)
# print(type(course_list)) for i in course_list:
print(i.get_text().strip())
time.sleep(2)
try:
self.driver.find_element_by_class_name('page-next-btn').click()
except:
print('多报点课程,好好学习')
break
if soup.select('a.page-next-btn.page-btn-dis'):
break if __name__ == '__main__':
# course = Tencent('3589307418', 密码, 'https://ke.qq.com/')
course = Tencent('1343215444', 密码, 'https://ke.qq.com/')
course.login()

结果:

深入浅出带你学Python冲击年薪30万【马哥教育】
人工智能+Python 2016基础班【博学谷】
Python高级开发 Flask 爬虫 Openstack Django
7天教你学会数学建模与Matlab编程(限时体验)
C语言游戏服务器开发
C/C++编程终极课程【Po学校】
3dmax动画模型蒙皮技术【朱峰社区】
系统集成项目管理工程师培训视频
3DMAX+AE棋牌新教室片头制作【幻维炫动】
3dmax插件thinkingparticle基础—蒲公英飘散效果【幻维炫动】
3dmax粒子运动的足球教程【朱峰社区】
PF粒子系统——粒子喷泉体验课
PS淘宝美工 平面设计 海报设计产品精修 10年资深设计师带你起飞
3DMAX新手游戏建模入门-CG模型-MAYA-艾巴优教育
游戏动画biped骨骼系统上
游戏动画biped骨骼系统下
游戏动画biped骨骼系统中
cad教程之AutoCAD练习图教程300例
2018年3月全国计算机等级考试二级公共基础知识视频课全套
全国计算机等级考试二级C语言程序设计培训国二C语言操作视频

隐起来的结果:

Python从零基础到项目实战
多报点课程,好好学习

九、Python+Selenium模拟登录的更多相关文章

  1. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  2. python selenium模拟登录163邮箱和QQ空间

    最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...

  3. python+selenium模拟京东登录后台

    python+selenium模拟京东登录后台 import json from time import sleep from selenium import webdriver #from sele ...

  4. 4 使用Selenium模拟登录csdn,取出cookie信息,再用requests.session访问个人中心(保持登录状态)

    代码: # -*- coding: utf-8 -*- """ Created on Fri Jul 13 16:13:52 2018 @author: a " ...

  5. selenium模拟登录豆瓣和qq空间

    selenium模拟登录豆瓣和qq空间今天又重新学习了下selenium,模拟登录豆瓣,发现设置等待时间真的是很重要的一步,不然一直报错:selenium.common.exceptions.NoSu ...

  6. Python requests模拟登录

    Python requests模拟登录 #!/usr/bin/env python # encoding: UTF-8 import json import requests # 跟urllib,ur ...

  7. 用python实现模拟登录人人网

    用python实现模拟登录人人网 字数4068 阅读1762 评论19 喜欢46 我决定从头说起.懂的人可以快速略过前面理论看最后几张图. web基础知识 从OSI参考模型(从低到高:物理层,数据链路 ...

  8. 3 使用selenium模拟登录csdn

    之前通过F12开发者模式调试,获取网站后台服务器验证用户名和密码的URL之后,再构造post数据的方式会存在一个问题,就是对目标网站的验证机制不明确,构造post数据除了用户名和密码之外,还可能有更复 ...

  9. 【爬虫】python requests模拟登录知乎

    需求:模拟登录知乎,因为知乎首页需要登录才可以查看,所以想爬知乎上的内容首先需要登录,那么问题来了,怎么用python进行模拟登录以及会遇到哪些问题? 前期准备: 环境:ubuntu,python2. ...

随机推荐

  1. 在Mac上打开多个Unity实例

    alias koa_unity="open -n /Applications/Unity\ 5.2.2/Unity.app" alias rob_unity="open ...

  2. 关于前端Ajaxc传FormData后台如何接收转base64

    前端是Jquery的ajax,后台是C#MVC,代码如下: <------前端-----> var formData = new FormData(); formData.append(& ...

  3. Go语言使用swagger生成接口文档

    swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言.Swagger与一组开源软件工具一起使用,以设计.构建.记录和使用RESTful Web服 ...

  4. Agumaster 增加日交易数据列表

  5. leetcode刷题-46全排列

    题目 给定一个 没有重复 数字的序列,返回其所有可能的全排列. 思路 回溯算法 不断取出字符,对剩余字符进行选择 实现 class Solution: def permute(self, nums: ...

  6. 【极致丝滑】彻底摆脱编辑器插件,利用postcss灵活可控地转换px至vw

    背景 旧的rem适配方案(无论是直接使用rem,还是配合flexiblejs等lib库进行视口缩放)已经疲态尽显,且随着安卓高清屏的不断出现,同时data-dpr仍有进一步增加的可能性,rem显得并不 ...

  7. SpringMVC执行流程源码分析

    SpringMVC执行流程源码分析 我们先来看张图片,帮助我们理解整个流程 然后我们开始来解析 首先SpringMVC基于Servlet来运行 那么我们首先来看HttpServletBean这个类 他 ...

  8. Linux rndis_host 驱动的一个BUG与解决方案

    关键字 rndis_host, linux, kernel, modem 综述 rndis 是微软定义的一套通讯方案.类似的协议还有 qmi/mbim/ecm/ncm. rndis 协议足够简单,可靠 ...

  9. linux操作指南-01

    目录 1.1 MBR 1.2 装双系统的坑 1.3 主机硬盘的主要规划 前言:记录下最近在看的鸟哥Liunx私房菜,虽然不是第一次看了..想记录几章开发中用的比较多的部分大致是以下几个章节 第3章 主 ...

  10. 我告诉你一个 AtomicInteger 的惊天大秘密

    i++ 不是线程安全的操作,因为它不是一个原子性操作. 那么,如果我想要达到类似 i++ 的这种效果,我应该使用哪些集合或者说工具类呢? 在 JDK1.5 之前,为了确保在多线程下对某基本数据类型或者 ...