您的位置:首页 > 编程语言 > Python开发

python selenium登录百度首页、网盘、贴吧分别获取cookies,利用xlwings写入excel中,观察其共同点

2018-05-26 15:23 711 查看

要点:

1.myfox().work()利用自己写的文件不需要重新打开浏览器

2.browser.get_cookies()得到此时网页的cookies

3.利用xlwings打开excel进行操作,指定sheet

4.单元格定位方式有sheet[0,row]、sheet.range(row, col)等等多种

5.sheet.autofit()  sheet自动调整间隔

===================================================

在网上找了教程后,试着添加cookie   driver.add_cookie(cookie)成功登录了百度首页,但是手动一转到贴吧,就会失去登录,研究了下,原来是该cookie只在首页有效,一但跳转到百度贴吧、百度网盘,就不行了!

我想对比下这3者的cookie区别,所以想都搞下来,但是用什么保存好呢?mysql?不过好像有点费劲,得登陆,又要创建表(不过数据库确实是最好的方法,起码不用操心字典的key如何对应)。还是用excel把,然后又把xlwings重温了一遍,录入,虽然费点时间,但是效果还行,挺酷的!

对了,前提得用我编写的myfox!这样才能持续操作,还得提前手动登录好账号,这样cookie才没问题!!


import os,time, from selenium.myfox import myfox from selenium import webdriver import xlwings as xw browser=myfox().work() cook=browser.get_cookies() #得到cookies的list #这是得到cookies所有的键值list,后面进行比较 listname=[] for cookie in cook: [listname.append(name) for name in cookie.keys() if name not in listname] #多个cookie的key集合到listname listname.sort() print(listname) #['name', 'secure', 'expiry', 'httpOnly', 'path', 'domain', 'value'] #打开excel文件 app=xw.App(visible=True,add_book=False) wb=app.books.open(r'C:\Users\Administrator\Desktop\text.xlsx') sheet = wb.sheets.active #打开指定excel当前的sheet sheet.clear() #清除所有内容格式 time.sleep(3) #excel的第一行每一列分别填入key,还把key-位置 放进lie字典里 lie={} for row,key in enumerate(listname): #enumerate把list变成索引—元素对 rng=sheet[0,row] #这种方式定位,是从0开始的,range(1,1)这种是从1开始 rng.value = key lie[rng.value] = rng.address print(lie) #{'value': '$A$1', 'path': '$B$1', 'expiry': '$C$1', 'name': '$D$1', 'secure': '$E$1', 'domain': '$F$1', 'httpOnly': '$G$1'} #循环cookies,把字典形式的cookie 按照第一行的key放进对应的'列',而且每个cookie都往下挪一行 num = 1 for cookie in cook: for k, v in cookie.items(): rng = lie[k] #cookie跟lie 的key是对应的,这样就能得出key所在的'列' col = sheet.range(rng).column #得出'列'对应的数字 row = sheet.range(rng).row + num #每一行都+1,往下挪一行 sheet.range(row, col).value = v #赋值,注意的是,平时'D1'都是“列-行”,此时是“行-列” num+=1 #每次+1 time.sleep(0.5) ##下面2个步骤都是一样的,只不过一个是贴吧,一个是首页 browser.get('https://tieba.baidu.com/') time.sleep(3) tieba=browser.get_cookies() num+=1 for cookie in tieba: for k, v in cookie.items(): rng = lie[k] #cookie跟lie 的key是对应的,这样就能得出key所在的'列' col = sheet.range(rng).column #得出'列'对应的数字 row = sheet.range(rng).row + num #每一行都+1,往下挪一行 sheet.range(row, col).value = v #赋值,注意的是,平时'D1'都是“列-行”,此时是“行-列” num+=1 #每次+1 time.sleep(0.5) ####百度首页 browser.get('https://baidu.com/') time.sleep(3) baidu=browser.get_cookies() num+=1 for cookie in baidu: for k, v in cookie.items(): rng = lie[k] #cookie跟lie 的key是对应的,这样就能得出key所在的'列' col = sheet.range(rng).column #得出'列'对应的数字 row = sheet.range(rng).row + num #每一行都+1,往下挪一行 sheet.range(row, col).value = v #赋值,注意的是,平时'D1'都是“列-行”,此时是“行-列” num+=1 #每次+1 time.sleep(0.5) sheet.autofit()#整个sheet自动调整
效果如下,挺酷的!









阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: