python登錄cookies
『壹』 為什麼使用python的requests獲取到的cookie不能用於登錄
r1.cookies 是個容器,是一個object你直接傳相當傳object的str
正確的寫法是用get 取出來再傳 設置cookie
cookies = {'PHPSESSID':r1.cookies.get('PHPSESSID')}
r2 = requests.post(url, data=json.mps(payload), headers=headers,cookies=cookies)
print(r2.text)
『貳』 怎麼用python爬需要登錄的網站數據
scrapy.FormRequest
login.py
class LoginSpider(scrapy.Spider):
name = 'login_spider'
start_urls = ['hin.com'] def parse(self, response):
return [
scrapy.FormRequest.from_response(
response, # username和password要根據實際頁面的表單的name欄位進行修改
formdata={'username': 'your_username', 'password': 'your_password'},
callback=self.after_login)] def after_login(self, response):
# 登錄後的代碼
pass123456789101112131415
selenium登錄獲取cookie
get_cookie_by_selenium.py
import pickleimport timefrom selenium import webdriverdef get_cookies():
url = 'httest.com'
web_driver = webdriver.Chrome()
web_driver.get(url)
username = web_driver.find_element_by_id('login-email')
username.send_keys('username')
password = web_driver.find_element_by_id('login-password')
password.send_keys('password')
login_button = web_driver.find_element_by_id('login-submit')
login_button.click()
time.sleep(3)
cookies = web_driver.get_cookies()
web_driver.close() return cookiesif __name__ == '__main__':
cookies = get_cookies()
pickle.mp(cookies, open('cookies.pkl', 'wb'))
獲取瀏覽器cookie(以Ubuntu的Firefox為例)
get_cookie_by_firefox.py
import sqlite3import pickledef get_cookie_by_firefox():
cookie_path = '/home/name/.mozilla/firefox/bqtvfe08.default/cookies.sqlite'
with sqlite3.connect(cookie_path) as conn:
sql = 'select name,value from moz_cookies where baseDomain="test.com"'
cur = conn.cursor()
cookies = [{'name': name, 'value': value} for name, value in cur.execute(sql).fetchall()] return cookiesif __name__ == '__main__':
cookies = get_cookie_from_firefox()
pickle.mp(cookies, open('cookies.pkl', 'wb'))12345678910111213141516
scrapy使用獲取後的cookie
cookies = pickle.load(open('cookies.pkl', 'rb'))yield scrapy.Request(url, cookies=cookies, callback=self.parse)12
requests使用獲取後的cookie
cookies = pickle.load(open('cookies.pkl', 'rb'))
s = requests.Session()for cookie in cookies:
s.cookies.set(cookie['name'], cookie['value'])1234
selenium使用獲取後的cookie
from selenium import webdriver
cookies = pickle.load(open('cookies.pkl', 'rb'))
w = webdriver.Chrome()# 直接添加cookie會報錯,下面是一種解決方案,可能有更好的# -- start --w.get('hww.test.com')
w.delete_all_cookies()# -- end --for cookie in cookies:
w.add_cookie(cookie)
『叄』 怎樣用Python設計一個爬蟲模擬登陸知乎
兩種方法:
1.帶cookielib和urllib2
import urllib2
import urllib
import cookielib
def login():
email = raw_input("請輸入用戶名:")
pwd = raw_input("請輸入密碼:") data={"email":email,"password":pwd}
post_data=urllib.urlencode(data) cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))headers
={"User-agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}website =
raw_input('請輸入網址:')req=urllib2.Request(website,post_data,headers)content=opener.open(req)print
content.read()
2.使用selenium
import selenium import webdriver
browser=webdriver.Firefox()
browser.get("Url")
browser.find_element_by_id(" ").sendkey("username")
browser.find_element_by_id(" ").sendkey("pass")
browser.find_element_by_id(" ").click()
其實我這個最簡單了,用的python3,requests, 只需要驗證一次,就會保存cookies,下次登錄使用cookies登錄。
第一步、打開首頁獲取_xref值,驗證圖片 第二步、輸入賬號密碼 第三步、看是否需要驗證、要則下載驗證碼圖片,手動輸入
第四步、判斷是否登錄成功、登錄成功後獲取頁面值。
『肆』 python獲取cookie後怎麼模擬登陸網站
運行平台:Windows
Python版本:Python3.x
IDE:Sublime text3
一、為什麼要使用Cookie
Cookie,指某些網站為了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端上的數據(通常經過加密)。
比如說有些網站需要登錄後才能訪問某個頁面,在登錄之前,你想抓取某個頁面內容,登陸前與登陸後是不同的,或者不允許的。
使用Cookie和使用代理IP一樣,也需要創建一個自己的opener。在HTTP包中,提供了cookiejar模塊,用於提供對Cookie的支持。
三、總結
獲取成功!如果看過之前的筆記內容,我想這些代碼應該很好理解吧。
『伍』 python爬蟲的session 和cookie登錄問題。
cookie是已經登錄了,網站已經是登錄狀態模擬打開網站
session是模擬輸入用戶名密碼登錄網站
『陸』 python爬蟲用cookies進行登錄是一次性的嗎
你要看被爬網站是如何設置cookies,不同網站的cookies功能都不太一樣,如果你指的是cookie的有效時間的話,不同網站的cookies的時長不一樣,長得可能一個cookies你可以用一星期,短的可能只有十五分鍾。按F12,你可以在裡面找到該網站cookies的最大有效時間
『柒』 python語言使用selenium怎麼設置自己的cookies
添加 cookie
1.這里需要添加兩個cookie,一個是.CNBlogsCookie,另外一個是.Cnblogs.AspNetCore.Cookies。
2.我這里打開的網頁是博客的主頁:htt
gs.com/yoyoketang,沒進入登錄頁。
3.添加cookie後刷新頁面,接下來就是見證奇跡的時刻了。
2.20.5 參考代碼:
# coding:utf-8
from selenium import webdriver
import time driver = webdriver.Firefox()
driver.get("htt
ogs.com/yoyoketang")
# # 添加cookie c1 = {u'domain': u'.cnblogs.com', u'name': u'.CNBlogsCookie', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False}
c2 = {u'domain': u'.cnblogs.com', u'name': u'.Cnblogs.AspNetCore.Cookies', u'value': u'xxxx', u'expiry': 1491887887, u'path': u'/', u'httpOnly': True, u'secure': False} driver.add_cookie(c1)
# 添加2個值
driver.add_cookie(c2)
time.sleep(3)
# 刷新下頁面就見證奇跡了
driver.refresh()
有幾點需要注意:
1.登錄時候要勾選下次自動登錄按鈕。
2.add_cookie()只添加name和value,對於博客園的登錄是不成功。
3.本方法並不適合所有的網站,一般像博客園這種記住登錄狀態的才會適合
『捌』 如何利用cookie登陸 python
由於Scrapy是基於Twisted實現的,所以同時兼顧有非常好的效率,相對來說唯一的缺點就是安裝比較麻煩,依賴也比較多,我還算是比較新的osx,一樣沒辦法直接pip install scrapy
另外如果在spider中引入xpath的話,再在chrome上安裝xpath的插件,那麼解析路徑一目瞭然,開發效率奇高。
『玖』 Python 使用cookie登陸的問題
cookie是有過期時間的,網站設置了有個值,所以到了過期時間就會失效
退出了的話伺服器會知道你的cookie里session已經過期。
大概有,比如經常保持此會話活動狀態。
不過最好還是把你的代碼改進為腳本自動登錄獲取cookie,Python的requests庫文檔里有講怎麼配置登錄:http://cn.python-requests.org/zh_CN/latest/
『拾』 使用python怎麼獲取京東網站cookie進行登錄
# -*- coding: utf-8 -*-
# !/usr/bin/python
import os
import urllib2
import urllib
import cookielib
import re
import sys
from bs4 import BeautifulSoup
『『『
編碼方式的設置,在中文使用時用到中文時的處理方式
『『『
default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
reload(sys)
sys.setdefaultencoding("utf-8")
def getHtml(url,data={}):
if(data=={}):
req=urllib2.Request(url)
else:
req=urllib2.Request(url,urllib.urlencode(data))
html=urllib2.urlopen(req).read()
return html
try:
cookie = cookielib.CookieJar()
cookieProc = urllib2.HTTPCookieProcessor(cookie)
except:
raise
else:
opener = urllib2.build_opener(cookieProc)
opener.addheaders = [(『User-Agent『,『Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11『)]
urllib2.install_opener(opener)
auth_url=『『
#auth_url = 『『
home_url=『『
#home_url = 『;
url = ""
login=getHtml(url)
#print login
loginSoup = BeautifulSoup(login,『html.parser『)
#查找登陸參數中的uuid
uuid = loginSoup.find_all("form")[0].find_all("input")[0][『value『]
print uuid
clrName=loginSoup.find_all("form")[0].find_all("input")[6][『name『]
clrValue=loginSoup.find_all("form")[0].find_all("input")[6][『value『]
『『『這倆參數不是必須。。。。
eid=loginSoup.find_all("form")[0].find_all("input")[4][『value『]
fp=loginSoup.find_all("form")[0].find_all("input")[5][『value『]
『『『
#下載驗證碼圖片:
checkPicUrl = loginSoup.find_all("div",id="o-authcode")[0].find_all("img")[0][『src2『]
req = getHtml(checkPicUrl)
checkPic = open("checkPic.jpg","w")
checkPic.write(req)
checkPic.close()
#調用mac系統的預覽(圖像查看器)來打開圖片文件
os.system(『open /Applications/Preview.app/ checkPic.jpg『)
checkCode = raw_input("請輸入彈出圖片中的驗證碼:")
#登錄URL
url = ""
# 登陸用戶名和密碼
postData = {
『loginname『:『你自己的賬號『,
『nloginpwd『:『你自己的密碼『,
『loginpwd『:『你自己的密碼『,
# 『machineNet『:『『,
# 『machineCpu『:『『,
# 『machineDisk『:『『,
str(clrName):str(clrValue),
『uuid『:uuid,
『authcode『: checkCode
}
passport=getHtml(url,postData)
print passport
# 初始化一個CookieJar來處理Cookie
『『『
cookieJar=cookielib.CookieJar()
# 實例化一個全局opener
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))
# 獲取cookie
req=urllib2.Request(auth_url,post_data,headers)
result = opener.open(req)
# 訪問主頁 自動帶著cookie信息
『『『
result = opener.open(『『)
# 顯示結果
#print result.read()
soup=BeautifulSoup(result,『html.parser『)
#昵稱
nickName = soup.find_all("input", id="nickName")[0]["value"]
print "nickName:",
print nickName