我们再做爬虫或者自动化项目的时候,有时候是需要登陆网站进行爬取数据的,但要是每次运行程序后都登录一遍的话就会很麻烦,所以我们可以事先登录一遍,然后获取cookie保在本地,然后下次使用爬虫的时候直接读取保存的cookie就省去了登录的麻烦.

获取cookies

获取cookie 的方法很简单,一种是浏览器的cookie,还有一个是请求头headers中的cookie

def get_cookie():
    browser = webdriver.Chrome()
    browser.get('https://yuaneuro.cn/login')
    input('登录')
    with open('cookies.txt', 'w') as cookief:
        cookief.write(json.dumps(browser.get_cookies()))
    headers_cookie = browser.execute_script('return document.cookie')
    with open('headers_cookies.txt', 'w') as f:
        f.write(headers_cookie)
    print('cookies保存成功!')

当你在打开的网页登录完成后 在命令框里敲一下回车即会自动保存cookie
其中browser.get_cookies()就是获取cookie
browser.execute_script('return document.cookie')是执行js语句document.cookie',但是注意 有些网站设置了HttpOnly的话可能无法通过js获取cookie

经过上述操作就会在当前目录下生成两个文件,接下来就是在爬虫中使用cookies

使用cookies

from fake_useragent import UserAgent
import requests

def spider():
    ua = UserAgent()
    with open('headers_cookies.txt', 'r')as f:
        cookie = f.read()
    headers = {
        'cookie': cookie,
        'User-Agent': ua.random
    }
    r = requests.get('https://yuaneuro.cn',headers=headers)
def spider2():
    browser.get('https://yuaneuro.cn')
    with open('cookies.txt', 'r') as cookief:
        cookieslist = json.load(cookief)
    for cookie in cookieslist:
        browser.add_cookie(cookie)
    browser.refresh()

因为cookies有很多条,所以用for循环将每条cookies都导入,然后刷新页面就是登录的状态了

本文作者:Author:     文章标题:selenium获取cookie和使用cookie
本文地址:https://yuaneuro.cn/archives/227.html     
版权说明:若无注明,本文皆为“yuaneuro的小站”原创,转载请保留文章出处。
Last modification:October 11th, 2020 at 12:51 pm