九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)
研究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(', 密码, '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模拟用QQ登陆腾讯课堂,并提取报名课程(练习)的更多相关文章
- 使用Python+Selenium模拟登录QQ空间
使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...
- python+selenium模拟京东登录后台
python+selenium模拟京东登录后台 import json from time import sleep from selenium import webdriver #from sele ...
- python selenium模拟登陆qq空间
不多说.直接上代码 from selenium import webdriver driver = webdriver.Chrome() driver.get('http://qzone.qq.com ...
- python selenium模拟登陆163邮箱。
selenium是可以模拟浏览器操作. 有些爬虫是异步加载的,通过爬取网页源码是得不到需要的内容.所以可以模拟浏览器去登陆该网站进行爬取操作. 需要安装selenium通过pip install xx ...
- 九、Python+Selenium模拟登录
研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏 ...
- python selenium模拟登录163邮箱和QQ空间
最近在看python网络爬虫,于是我想自己写一个邮箱和QQ空间的自动登录的小程序, 下面以登录163邮箱和QQ空间和为例: 了解到在Web应用中经常会遇到frame/iframe 表单嵌套页面的应用, ...
- 使用python - selenium模拟登陆b站
思路 输入用户名密码点击登陆 获取验证码的原始图片与有缺口的图片 找出两张图片的缺口起始处 拖动碎片 功能代码段 # 使用到的库 from selenium import webdriver from ...
- python selenium 模拟登陆百度账号
代码: from selenium import webdriver url = 'https://passport.baidu.com/v2/?login' username = 'your_use ...
- python+selenium 模拟登陆,自动下单
目前写的实在太粗糙,留着,以后来写上
随机推荐
- A Proof of Stake Design Philosophy - PoS权益证明设计理念
之前在EthFans上看到了关于PoS(权益证明)的相关文章(原文链接),本着学习的态度,对这篇文章进行了翻译.第一次翻译关于区块链的文章,有些单词及句子的措辞还不是很准确,如果发现有翻译的不恰当的地 ...
- Cannot find class: BaseResultMap
版权声明:本文为博主原创文章,转载请注明出处. model对应的mapping中将resultType改成resultMap即可. 什么是相应的model的xml配置文件呢? 可以理解为: 一直都可以 ...
- 【Unity与23种设计模式】原型模式(Prototype)
GoF中定义: "使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成." Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其 ...
- Spring shiro 初次使用小结
首先引入一段关于shiro的介绍: 开发系统中,少不了权限,目前java里的权限框架有SpringSecurity和Shiro(以前叫做jsecurity),对于SpringSecurity:功能太过 ...
- 关于脱离laravel框架使用Illuminate/Validation验证器
1.关于Illuminate/Validation验证器 Validation 类用于验证数据以及获取错误消息. github地址:github.com/illuminate/validation 文 ...
- 剑指Offer-删除链表中重复的结点
package LinkedList; /** * 删除链表中重复的结点 * 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. * 例如,链表1-> ...
- gulp工程化工具
gulpfile.js var gulp = require('gulp'); var rename = require('gulp-rename') var pump = require('pump ...
- redis集群离线安装
环境准备: redis-4.0.7.tar.gz redis的安装包 Ruby环境(集群搭建需要用ruby创建, ruby环境在2.2以上.) rubygems-2.7.4.tgz 和 redis-3 ...
- 一周Maven框架学习随笔
第一次写博客,可能写得不是很好,但是希望自己持之以恒,以后会更好.也希望通过写博客记录随笔,让自己本身有所收获. 下面是今天的maven总结: maven个人理解中是Maven项目对象模型(POM), ...
- HTTP协议----URI,URL,持久连接,管道与Cookie
URI与URL有什么不同呢? URI:Universal Resource Identifier统一资源标志符 URL:Universal Resource Locator统一资源定位器 URI是用来 ...