python 模拟浏览器selenium_python爬虫10:使用selenium模拟浏览器登录账号
需求背景:
很多网页通过复杂的JS函数组合,来实现对信息的加密、异步信息处理等,导致很难分析出网页接口。
那么最快速度的实现爬虫功能,是模拟浏览器的行为,加载运行JS,才能破解页面。
模拟浏览器行为,在python中的最佳实践方案是使用selenium包。被模拟的浏览器可以使用chromedriver(有界面浏览器)或者phantomjs(无界面浏览器)。
所有复杂的登录、JS加密、AJAX异步,如果无法分析出网页接口,都可以使用selenium+browserdriver方案,来模拟浏览器上网。
知识点
一、什么是selenium?
selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。
selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
二、如果配置被模拟的浏览器?
那chromedriver举例
先在百度搜chromedriver,并且下载到本地。(朱毅chromedriver.exe对应的版本要和实际安装的chrome.exe版本一致。)
三、举例一段模拟登陆某个网页,并且获取cookies的过程
下面是一段登陆网盘的模块。如果cookies是空,那么就使用selenium打开网页登陆一次保存cookies。如果不空,那么就直接使用缓存中的cookies。
1 from etc importjboxenv2 from selenium importwebdriver3 from selenium.webdriver.common.by importBy4 from selenium.webdriver.support importexpected_conditions as EC5 from selenium.webdriver.support.wait importWebDriverWait6
7 logger =jboxenv.JBOX_LOGGER8 __jbox_cookies ={}
12 __header ={13 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36'}14
15
16 defget_user_cookies(username, password):17 '''
18 获取JBOX的登录cookies19 模块第一次使用时通过账号密码获取cookie20 登录成功以后再申请cookie,读取模块中的缓存21 :param username: 用户名22 :param password: 密码23 :return: 返回一个dict,保存了cookies字典24 '''
25 #打开首页获取cookies
26 global __jbox_cookies
27 if __jbox_cookies.keys():28 return __jbox_cookies
29 else:30 driver = webdriver.Chrome(r'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')31 try:32 driver.get("http://pan.jd.com/")33 name = driver.find_element_by_id('account')34 name.send_keys(username)35 psd = driver.find_element_by_id('password')36 psd.send_keys(password)37 btn = driver.find_element_by_class_name('btnsubmint')38 btn.click()39 #等待新页面出现的某个元素出现
40 wait = WebDriverWait(driver, 10)41 wait.until(EC.presence_of_element_located((By.ID, 'showMine')))42 if len(driver.get_cookies())>0:43 for c indriver.get_cookies():44 __jbox_cookies[c.get('name')] = c.get('value')45 finally:46 driver.close()47 #如果没有登录成功,就提醒需要重新登录
48 if not __jbox_cookies.keys():49 logger.error('通过登录JBOX申请cookies,登录结果:失败')50 print(__jbox_cookies)51 return __jbox_cookies
52
53
54 if __name__ == '__main__':55 print(get_user_cookies('shwujiang', 'Fig@2016092404'))
python 模拟浏览器selenium_python爬虫10:使用selenium模拟浏览器登录账号相关推荐
- python 模拟浏览器selenium_python爬虫:使用Selenium模拟浏览器行为
前几天有位微信读者问我一个爬虫的问题,就是在爬去百度贴吧首页的热门动态下面的图片的时候,爬取的图片总是爬取不完整,比首页看到的少.原因他也大概分析了下,就是后面的图片是动态加载的.他的问题就是这部分动 ...
- python 模拟浏览器selenium 微信_Spider-Python爬虫之使用Selenium模拟浏览器行为
分析 他的代码比较简单,主要有以下的步骤:使用BeautifulSoup库,打开百度贴吧的首页地址,再解析得到id为new_list标签底下的img标签,最后将img标签的图片保存下来. header ...
- python 模拟浏览器selenium_从零开始写Python爬虫 --- 3.1 Selenium模拟浏览器
本来说好要写Mechanize模拟浏览器的,结果一看居然只支持2.x版本的Python,而且已经长久没有更新维护了,本着学新不学旧的原则,我决定跳过他,直接开学Selenium(其实就是我懒,逃 Se ...
- python 浏览器模拟手机_Python爬虫关于移动端模拟
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:测试小兵 坚持梦想 就算所有人都不支持你.这条路会很曲 ...
- 网络爬虫pyppeteer、selenium模拟浏览器抓取数据
项目场景: 1.抓取数据时,响应状态码为412,即状态码412含义为:Precondition Failed,服务器在验证在请求的头字段中给出先决条件时,没能满足其中的一个或多个.这个状态码允许客户端 ...
- python 无头浏览器xhr 文件_Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件...
""" 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 python对selenium封装浏览器调用 ------b ...
- python自动输入账号密码_Python如何基于selenium实现自动登录博客园
这篇文章主要介绍了Python如何基于selenium实现自动登录博客园,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 需要做的准备: 本文章是使用 ...
- Python用selenium实现自动登录账号,密码
1.今天的网站是学习通来测试登录 2.内容如下 (1).登录网站 (2).找标签我们可以根据id标签找到账号登录入口 我们可以根据id标签找到账号密码入口 登录标签也可以通过id找到 代码如下 fro ...
- python 如何调试uc浏览器_Python爬虫教程-10-UserAgent和常见浏览器UA值
有时候使用爬虫会被网站封了IP,所以需要去模拟浏览器,隐藏用户身份, UserAgent包含浏览器信息,用户身份,设备系统信息 UserAgent:用户代理,简称UA,属于headers的一部分,服务 ...
最新文章
- android-sqlite小实例
- python简单界面实现-python实现的简单窗口倒计时界面实例
- 如何将视频设置为网页背景
- Microsoft Visual Studio Code
- html页面可以用在webview,使用WebView加载HTML代码
- 图片底侧空白缝隙解决方案(HTML、CSS)
- spdlog: undefined reference to `fmt::SystemError::init(int, fmt::BasicCStringRef<char>, fmt::ArgList
- 【codevs2333】【BZOJ2002】弹飞绵羊[HNOI2010](分块)
- 计算机excer试题,计算机电子表格excel练习题
- 怎么使用计算机公式,在excel怎么运用计算公式进行运算?
- html caption属性的值,如何设置caption属性
- python爬取LOL皮肤
- 哈工大人工智能研究院院长刘劼:打造从科研到产业的创新生态
- IP地址和域名的关系
- 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]
- Matlab 将计算结果制作成 gif 动画
- 在团体沙盘游戏实操中分析“自我、本我、超我”
- 计算机的硬盘 u盘启动,【电脑bios设置硬盘启动】电脑bios设置光驱启动_电脑bios设置u盘启动...
- 百舸争流,通信云市场还有哪些变数?
- Vue3 + Element-Plus upload组件封装限制上传数量,再次上传则覆盖
热门文章
- 达人评测 r7 7730u和i7 12700h差距 锐龙r77730u和酷睿i712700h对比
- 微信可以设置雪花昵称和彩色昵称了
- 三、道阻且长之单例模式
- Vue实现购物车全选及价格计算
- GetLastError函数封装显示具体错误信息
- 7. 伪随机数的生成
- 操作系统【用户接口】命令解释程序的主要功能、系统调用与一般过程调用的不同之处、系统调用的参数传递方式、系统调用的处理步骤
- 华为鸿蒙系统烤箱,华为鸿蒙OS系统如何支持形态各异的产品?
- vs怎么配置c语言codemac,在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)...
- 新知实验室 腾讯云实时音视频产品体验