九、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 模拟登陆,自动下单
目前写的实在太粗糙,留着,以后来写上
随机推荐
- Jquery EasyUI datagrid 的一些问题
在使用 Easy UI datagrid时 出现了一下小问题: table 中 有数据,但是 没有标题行名..在其他页面同样使用了datagrid 但是没有这样问题. 仔细检查了js代码,确认无误后 ...
- 用于 SELECT 和 WHERE 子句的函数
一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成. 包含 NULL 的表达式总是得出一个 NULL 值结果,除 ...
- CVPR2018: Unsupervised Cross-dataset Person Re-identification by Transfer Learning of Spatio-temporal Patterns
论文可以在arxiv下载,老板一作,本人二作,也是我们实验室第一篇CCF A类论文,这个方法我们称为TFusion. 代码:https://github.com/ahangchen/TFusion 解 ...
- 笔记:I/O流-内存映射文件
内存映射文件时利用虚拟内存实现来将一个文件或者文件的一部分映射到内存中,然后整个文件就可以当作数组一样的访问,这个比传统的文件操作要快得多,Java 使用内存映射文件首先需要从文件中获取一个chann ...
- 笔记:Hibernate 拦截器和事件
Hibernate 在执行持久化的过程中,应用程序通常无法参与其中,通过事件框架,Hibernate 允许应用程序能响应特定的内部事件,从而允许实现某些通用的功能,或者对 Hibernate 进行扩展 ...
- poj 3664
http://poj.org/problem?id=3664 进行两轮选举,第一轮选前n进入第二轮,第二轮选最高 #include<algorithm> #include<cstdi ...
- nxlog4go 的配置驱动
刚开始接触log4go项目时,没有注意到配置的重要性. 阅读了log4j.log4net.log4cpp.log4cplus的部分代码,发现它们都是以xml配置来驱动日志系统运行的. 多个源文件共享一 ...
- [poj2752]Seek the Name, Seek the Fame_KMP
Seek the Name, Seek the Fame poj-2752 题目大意:给出一个字符串p,求所有既是p的前缀又是p的后缀的所有字符串长度,由小到大输出. 注释:$1\le strlen( ...
- oracle 常用select sql语句
本人认为很实用的几条语句 1)select ... from ...into... 2)insert into ...select ... 3)select ...from ...left join ...
- Java基础学习笔记四 Java基础语法
数组 数组的需求 现在需要统计某公司员工的工资情况,例如计算平均工资.最高工资等.假设该公司有50名员工,用前面所学的知识完成,那么程序首先需要声明50个变量来分别记住每位员工的工资,这样做会显得很麻 ...