07.模拟登陆

使用selenium登陆并保存cookie

# _*_ coding: utf-8 _*_
__author__ = 'daxiahy'
__date__ = '2019/2/26 21:38'
import time
import pickle
import scrapy
from selenium import webdriver
from scrapy.selector import Selector

def start_requests(self):
    brower = webdriver.Chrome(executable_path="D:/01python/04scrapy/chromedriver.exe")

    brower.get("https://www.zhihu.com")

    # t_selecter = Selector(text=brower.page_source)
    brower.find_element_by_css_selector('.SignContainer-switch span').click()
    brower.find_element_by_css_selector('.SignFlow-accountInput.Input-wrapper input').send_keys('18699702048')
    brower.find_element_by_css_selector('.SignFlow-password .SignFlowInput .Input-wrapper input').send_keys('14789632hy')
    time.sleep(10)
    brower.find_element_by_css_selector('.Button.SignFlow-submitButton.Button--primary.Button--blue').click()

    time.sleep(10)

    Cookies = brower.get_cookies()
    print(Cookies)
    cookie_dict = {}
    import pickle

    for cookie in Cookies:
        # 写入文件
        # 此处大家修改一下自己文件的所在路径
        f = open('./douban250/cookies/zhihu/' + cookie['name'] + '.zhihu', 'wb')
        pickle.dump(cookie, f)
        f.close()
        cookie_dict[cookie['name']] = cookie['value']
    brower.close()
    return [scrapy.Request(url=self.start_urls[0], dont_filter=True, cookies=cookie_dict)]

print(start_requests(self=''))

使用requests库模拟登陆并保存cookie到本地

# _*_ coding: utf-8 _*_
import requests

# 兼容py2 py3
try:
    import cookielib
except:
    import http.cookiejar as cookielib


agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" \
        " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
header = {
    "HOST": "accounts.douban.com",
    "Referer": "https://accounts.douban.com/passport/login",
    'User-Agent': agent
}
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='cookies.txt')


# 豆瓣登陆
def douban_login(account, password):
    login_url1 = 'https://accounts.douban.com/j/mobile/login/basic'
    post_data = {
        'ck': '',
        'name': account,
        'password': password,
        'remember': 'false',
        'ticket': '',
        }

    response_text = session.post(login_url1, data=post_data, headers=header)
    session.cookies.save()


douban_login('daxiahy@163.com', 'xxxxxxxx')