使用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')