python爬虫100例--爬虫技术--Selenium模拟登录CSDN(3)

写在前面

1、为甚麽要模拟登录?

	怎么说呢,现如今各大网站都需要用户登录后才可以访问到相关的信息,你不登录,它不给你机会。这就像是个门槛放在哪里,只有越过障碍,才能走上平坦大道。

2、为甚麽使用Selenium?

	当然时它的可视化和自动化了,太有感觉了,自己就像上帝一样,写写代码,我的浏览器就自己动起来的,它不香嘛?

话不多说了,就动起来。

一、目标网站

当然时小编经常逛逛的blog:csdn

二、工具

主要是Selenium 模块,其他照旧。

三、网站分析

在这里小编介绍的是一种核心技术,即通过使用cookie的方法直接访问,后期访问的时候就一劳永逸了。

3.1 首次访问没有cookie

确实如此,使用selenium首次访问目标网站时,你并不知道cookie,那么我们该如何得到理想的cookie呢。

3.2 如何获取cookie

在这里有个取巧的方法,在我们使用selenium访问时,需要先手动登陆。这样一来,selenium还在运行时,我们人为的登陆到了目标网站,此时需要运用到selenium的一个方法get_cookies(),即我们将登陆后的cookie信息获取到,并保存在相应的文件中。关键代码如下

url = 'https://passport.csdn.net/login?code=mobile'
path = r'E:\\chromedriver_win32\chromedriver.exe'
driver = webdriver.Chrome(executable_path=path)
driver.get(url)
time.sleep(60)
with open('csdn_cookies.txt','w') as fp:
     fp.write(json.dumps(driver.get_cookies()))

首先访问登陆界面的链接,让程序停止到60秒,目的当然时为了可以让我们有足够的时间来实现手动登陆,登陆之后,selenium 自然会执行保存cookie的操作。此时我们已经获取到了登陆状态的cookie.txt

3.3 利用cookie.txt进行登陆

既然得到了cookie,那么使用selenium 的另一个方法add_cookie(),访问目标网站时带上它即可。

driver.get('https://www.csdn.net/')
with open('csdn_cookies.txt','r') as fp:
    cookies_list = json.load(fp)
    for cookie in cookies_list:
         # 将过期时间expiry删除,避免不必要的麻烦 
         if 'expiry' in cookie:
             del cookie['expiry']
         driver.add_cookie(cookie)
driver.refresh()

利用add_cookie()的方法,可以很容易带上cookie访问了。但是在这里有一个问题,就是为甚麽不先带上cookie,然后在进行访问目标网站,而是先访问目标网站,然后再带cookie,再刷新网页就可以了呢。
小编也实验过多次,认为,添加cookie时,需要让driver 知道向哪个域名添加,所以在添加cookie前,必须先访问下目标网站,之后再添加cookie,这样一来,driver就知道是往那个域名添加cookie了,此时只要刷新网页,就可以进入到登陆状态了。

四、结果展示

在这里插入图片描述
注意观察右上角,一开始页面时出现登陆/注册的字样,后来我们添加了cookie后,页面自动刷新了,此时,已经成功使用selenium模拟登陆到csdn了。

五、感慨万分

挺有趣的一个selenium!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值