我们在常用的浏览器上登录新浪微博时,并不需要输入账号和密码。这是因为浏览器自身储存了cookie,避免了再次登录重复输入密码的繁琐。而使用Selenium本来就要安装浏览器驱动。所以只要一个driver.get_cookies()函数就可以获得cookie。
首先,我们要先模拟登录一次微博:
#登录微博 driver = webdriver.Chrome() driver.get('https://weibo.com/') time.sleep(5) #输入账号 driver.find_element_by_xpath('//input[@id="loginname"]').send_keys('username') #输入密码 driver.find_element_by_xpath('//input[@name="password"]').send_keys('password') #点击登录 driver.find_element_by_xpath('//a[@class="W_btn_a btn_32px"]').click() time.sleep(5) #获取cookie cookie = driver.get_cookies() print (type(cookie)) print (cookie)
此时,我们就获得了浏览器的cookie。这个cookie是一个含有18个字典的列表,每个字典中又有7个元素:
{"domain": ".weibo.com", "expiry": xxxxxxxx, "httpOnly": False, "name": "un", "path": "/", "secure": False, "value": "xxxxxxx"}然后,我们只要使用driver.add_cookie()把这18个字典添加到driver的cookie中去就可以了。
# 一、打开网页 driver = webdriver.Chrome() driver.get('http://weibo.com') # 二、删除cookie driver.delete_all_cookies() # 三、添加上一步骤获得的cookie cookielist = [{字典},....,{字典}] for cookie in cookielist: driver.add_cookie(cookie) # 四、刷新页面,即可登录 driver.refresh()快试试看吧,是不是比Finder抓包方便了许多?