如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。

一、确认软件版本

首先我们需要确认我们所使用的谷歌浏览器版本,这里测试的谷歌浏览器版本为(版本 67.0.3396.87(正式版本) (64 位)),点击设置—关于Chrome,则可以看到

我们进入 Chromedriver 的官网下载页面,可以看到最新的 2. 4 版本支持谷歌的 v66-68,下载并保存路径即可

这里我们下载 win 版本,解压后存放到路径 “E:\chromedriver.exe”。

二、初步访问网站

除了使用 Chromedriver作为驱动,我们想要访问网站,还需要用到 Selenium 模块,Selenium 是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击、下拉等等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。我们先来安装此模块

pip install selenium

接着我们实现的代码如下

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @Time : 2018/6/24 20:45

# @Author : zhouyuyao

# @File : demon2.py

import os

import time

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

chromedriver = "E:\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver # 获取chromedriver可执行文件路径

# print(os.environ["webdriver.chrome.driver"])

driver = webdriver.Chrome(chromedriver) # 声明浏览器对象

driver.get("http://www.python.org") # 访问页面,用 get() 方法来请求一个网页,参数传入链接 URL 即可

time.sleep(10) # 停留10s

driver.quit() # 关闭浏览器

运行之后我们便发现弹出了 Chrome 浏览器,自动访问了 Python 官网,随后浏览器关闭。

三、自动登录网站

我们会需要通过 XPath 查找元素,使用 XPath 的主要原因之一就是当你想获取一个既没有 id 属性也没有 name 属性的元素时, 你可以通过 XPath 使用元素的绝对位置来获取他(这是不推荐的),或相对于有一个 id 或 name 属性的元素 (理论上的父元素)的来获取你想要的元素。XPath 定位器也可以通过非 id 和 name 属性查找元素。

接着我们找到京东的登录界面,查看源代码,会发现如果想要实现账号登录京东,就必须找到源码中账户登录的唯一键,此处唯一为“clstag”值

绝对的 XPath 是所有元素都从根元素的位置(HTML)开始定位,只要应用中有轻微的调整,会就导致你的定位失败。 但是通过就近的包含 id 或者 name 属性的元素出发定位你的元素,这样相对关系就很靠谱, 因为这种位置关系很少改变,所以可以使你的测试更加强大。

这里我们通过查找超链接的位置来定位账户登录

driver.find_elements_by_xpath('//a[@clstag="pageclick|keycount|login_pc_201804112|10"]')[0].click()

然后我们在谷歌的调试模式中分别找到登录的 “账号“(loginname)、“密码“(nloginpwd) 以及 “登录” (loginsubmit)的 id 。

最后我们的实现代码如下

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# @Time : 2018/6/24 21:20

# @Author : zhouyuyao

# @File : demon3.py

import random

import time

import os

from selenium import webdriver

def randomSleep(minS, maxS): # 定义随机停顿时间函数

time.sleep((maxS-minS)*random.random() + minS)

url = 'https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fwww.jd.com%2F'

chromedriver = "E:\chromedriver.exe"

os.environ["webdriver.chrome.driver"] = chromedriver

driver = webdriver.Chrome(chromedriver) # 声明浏览器对象

driver.get(url) # 访问页面,用 get() 方法来请求一个网页,参数传入链接 URL

randomSleep(1, 3)

driver.find_elements_by_xpath('//a[@clstag="pageclick|keycount|login_pc_201804112|10"]')[0].click()

# find_elements_by_xpath 通过XPath查找元素

randomSleep(1, 2)

driver.find_element_by_id('loginname').clear()

randomSleep(1, 3)

driver.find_element_by_id('loginname').send_keys("username")

randomSleep(1, 2)

driver.find_element_by_id('nloginpwd').send_keys("userpassword")

randomSleep(3, 5)

driver.find_element_by_id('loginsubmit').click()

randomSleep(5, 10)

print(driver.get_cookies())

driver.close() # 关闭浏览器

运行之后程序打开了浏览器,自动输入账号密码并成功登录京东

之后退出浏览器,并拿到了cookies 打印了出来。

登录其他网站可以参照该操作流程,后续如有需求将进行更新。

参考资料

python实现自动登录网页版_Python实现自动登录站点相关推荐

  1. python123登录网页版_Python模拟登录验证码(代码简单)

    废话不多说了,直接给大家贴代码了. import urllib import urllib2 import cookielib def getImg(picurl): ''' request for ...

  2. android华为登录云服务,华为云服务登录网页版

    华为云服务登录网页版是一款专为华为手机用户打造的相册管理安全储存软件,拥有一键快速恢复删除照片,安全下载查看图片,实时云端同步保存,赶紧下载体验一下吧. 华为云服务登录网页版特色 [轻松查找照片] 智 ...

  3. 【Openfire】网页版的用户注册、登录、修改密码

    Openfire客户端的开发是借助Smack提供的方法.Smack可以从官网下载.如果是Openfire3.7.1的版本,建议使用Smack3.2.2与其匹配.官网地址:http://www.igni ...

  4. 为什么你会被限制登录网页版微信?

    有一个词叫做"三月爬虫",指的是有些学生临到毕业了,需要收集数据写毕业论文,于是在网上随便找了几篇教程,学了点requests甚至是urllib和正则表达式的皮毛,就开始写爬虫疯狂 ...

  5. Python 写了一个网页版的「P图软件」,惊呆了!

    作者 | 小欣 来源 | Python爱好者集中营 今天是开工第一天,这篇文章可以算作是虎年的第一篇干货技术类文章了,今天小编用Python做了一个网页版的"P图软件",大致的流程 ...

  6. 微信群控系统制作系列一——java模拟登录网页版微信

    PS:很多人咨询我怎么做手机群控系统,因此我开了个制作群控系统的系列,准备分五期讲解群控系统的制作.前两篇是基础内容. 今天做个简单的java模拟登录网页版微信. 既然要做模拟登录,那么我们一定要了解 ...

  7. selenum登录网页版有道词典

    登录网页版有道词典,需注意它有两个复选框,这里只勾选第一个 代码 # -*- coding: utf-8 -*- # Time: 2020-06-22 # Author: zuojileiimport ...

  8. 关于网页版微信扫码登录以及获取用户信息

    由于我只研究了1天时间,可能有些地方认知错误 1:网页版微信扫码登录的流程 ① 点击扫码登录按钮 ② qrAuthorize(访问微信接口,如果微信接口判断有权限生成二维码的话,跳转到二维码页面.) ...

  9. 简述网页版微信扫码登录的过程

    我的小站 网页版微信扫码登录流程 1. 请求页面 先打开https://wx.qq.com/显示出页面,这时候会加载一堆的html,js等资源. 2. 获取会话UUID 微信Web版本不使用用户名和密 ...

最新文章

  1. 面试:你了解中兴吗_HTTP简介:您需要了解的所有内容
  2. DevOps Troubleshooting(1)-运维思想
  3. 用户 'sa' 登录失败。该用户与可信 SQL Server 连接无关联。
  4. Pat甲级 1002 A+B for Polynomials
  5. 日期格式php用点隔离,PHP学习之校验日期格式合法性?(使用strtotime()和date())...
  6. 2017.4.11 AM
  7. JVM PermGen –您在哪里?
  8. labview my_fpga开发套件下载_LabVIEW面向对象的ActorFramework(1)
  9. 操作系统用户态内核态线程同步
  10. 张量/tensor--详解
  11. java程序包r不存在_java - 从命令行使用Gradle构建时,“程序包R不存在”错误 - 堆栈内存溢出...
  12. 官宣:微信可以转账到QQ上了。微信今日新增全新表情包
  13. 使用easyos递归删除城通网盘的日志
  14. 前端学习-jquery-实现点击button对文本的add及detele
  15. 我的眼眸,等你路过我的容颜
  16. 向量长度、夹角与向量正交
  17. 悲观并发控制(Pessimistic Concurrency)
  18. 地球子午圈和卯酉圈曲率半径计算公式
  19. 试算平衡表两种方法比较
  20. 使用函数提取姓别和出生日期:

热门文章

  1. 99999款PS笔刷合集,简直就是绘画神器(全网最全系列)
  2. 金蝶协同HTML流程,云之家网页版登录,开启高效协同操作
  3. 有趣的游戏编程学习网站
  4. 【智力题】每个飞机只有一个油箱,飞机之间可以相互加油(注意是相互,没有加油机)一箱油可供一架飞机绕地球飞半圈。 问题:为使至少一架飞机绕地球一圈回到起飞时的飞机场,至少需要出动几架飞机?
  5. Gitlab 数据备份
  6. 计算机科学与技术学费贵吗,在职计算机科学与技术研究生学费贵吗?
  7. htc g1usb驱动
  8. HTML中的head和body标签及作用
  9. 守望先锋加载loading在Android上的实现
  10. 论如何搞定可恶的口腔溃疡