需求

有些网站的一些网页需要登陆才可以的。这时候就是需要借助python的selenium的模块,我突然找到一个更方便的方法。

我的这个方法优点:

不用使用找到相关登陆框输入账号密码,也不用一个一个查找cookie,省时省力。

1、之前的笨方法

先说一下我之前用的笨方法,之前是模拟一个招聘网站,至于那个网站就不公布了,然后我再网站如下图(?)的地方,进行一个一个cookie删除,最终找到和登陆相关的俩个cookie,把俩个cookie加到selenium里面,也能实现模拟登陆功能。

在这里插入图片描述
在这里插入图片描述

2、简单方法

今天我突然灵机一动,想到一个简单方法。这个方法主要思路就是先写个代码,访问网站主要,使用python的time模块,停留30秒,这段使用你用来登陆自己的账号,然后代码打印处理你登陆后的cookies,这样就可以找到所以cookies,然后把这些cookies一个一个加入到下一个代码里面,就能实现模拟登陆的功能了,这个时间比之前省了很多。之前的方法一个一个cookie删除刷新,删除刷新,搞了我一俩个小时,才找到是和俩个cookie相关,俩个cookie同时删除才能到,所以如果其他网站和登陆的cookie相关个数增加2个或者以上,那样时间不止一俩个小时了。而这样几分钟就搞定了。

简单方法步骤:

不多说,直接上代码:

步骤1获取cookies列表:

from selenium import webdriver
import time
import random
driver = webdriver.Chrome()
url = "https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&page=1&s=1"
driver.get(url)
# 等待时间用来获取cookie
time.sleep(30) # 这个时间用来自己手动登陆
cookie = driver.get_cookies()
# 这个就是需要的cookie列表
print('cookie',cookie)

步骤2:

from selenium import webdriver
import time
import random
driver = webdriver.Chrome()
driver.implicitly_wait(10)
# url = "https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&page=1&s=1"
url = "https://search.jd.com/Search?keyword=裤子&enc=utf-8&page=1&s=1"
driver.get(url)
# time.sleep(30)
cookies = “这个是上一步打印出来的cookies列表,不用改格式,因为本身就是selenium打印出来的格式,他需要的也是这样的格式”
for cookie in cookies:
    # 只能一个一个加入
    driver.add_cookie(cookie)
time.sleep(1)
# 再次访问你需要的url,看看是不是可以登陆了。
driver.get(url)
time.sleep(2)