python爬虫登录网站_Python爬虫常用之登录(二) 浏览器模拟登录

浏览器模拟登录的主要技术点在于:

1.如何使用python的浏览器操作工具selenium

2.简单看一下网页,找到帐号密码对应的框框,要知道python开启的浏览器如何定位到这些

一、使用selenium打开网页

from selenium importwebdriver

url= 'https://passport.cnblogs.com/user/signin'driver=webdriver.Firefox()

driver.get(url)

以上几句执行便可以打开博客园的登录界面,开启浏览器可能较慢,耐心等一下.

以前的selenium可以直接打开firefox,现在的需要安装geckodriver,自己百度下载一个对应自己浏览器的型号的.

chrome一直都需要驱动,使用chrome的需要设置的可能麻烦一点.推荐看一下虫师的相关文章,个人觉得讲得不错,百度搜索出来还是比较靠前的.

二、找到帐号密码对应的页面元素

920409-20170821112719527-774967873.png 浏览器打开页面,点击f12,按上图步骤,找到了用户名的id"input1",同理找到密码的id,找到后发现是"input2".

三、将自己的用户名和密码填入selenium打开的浏览器

使用find_element_by_id方法找到元素,再使用send_keys方法传入参数,最后使用click方法点击登录按钮即可.

成品代码有如下几句:

#/usr/bin/python#encoding: utf-8

importtimefrom selenium importwebdriverdeflogin(username, password):#url = 'https://passport.cnblogs.com/user/signin' # 使用这个url登录成功后定位到园子

url = 'https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fwww.cnblogs.com%2F' #url中指明定位到博客园首页

driver=webdriver.Firefox()

driver.get(url)#print driver.title

name_input = driver.find_element_by_id('input1') #找到用户名的框框

pass_input = driver.find_element_by_id('input2') #找到输入密码的框框

login_button = driver.find_element_by_id('signin') #找到登录按钮

name_input.clear()

name_input.send_keys(username)#填写用户名

time.sleep(0.2)

pass_input.clear()

pass_input.send_keys(password)#填写密码

time.sleep(0.2)

login_button.click()#点击登录

time.sleep(0.2)printdriver.get_cookies()

time.sleep(2)printdriver.title

driver.close()if __name__ == "__main__":

user= "Masako"pw= "*****"login(user, pw)

使用time模块sleep主要是为了控制操作速度,防止被认为是机器人,比较符合现实的情况应该随机sleep时间.

上述代码执行之后(注意将用户名密码换成自己的),可以看到打开了浏览器,并自动填写了帐号密码,自动点击登录,成功后跳转,然后自动关闭浏览器.

本地可以看到打印了一份cookie和一个标题"博客园 - 开发者的网上家园".

如果登录失败,打印的标题会是"用户登录 - 博客园".

如果报错,未打开浏览器,多半是没有安装geckodriver.

上述代码会打开浏览器界面,若不想看到界面,可采用以下手段:

if __name__ == "__main__":from pyvirtualdisplay importDisplay

display= Display(visible=0, size=(1366, 768))

display.start()

user= "Masako"pw= "*****"login(user, pw)

display.stop()

在调用浏览器的时候使用Display包裹,并将dispaly设置为不可见(visible=0)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值