解決scrapy設定cookie中介軟體時遇到的問題

2021-10-10 11:56:03 字數 1537 閱讀 6702

直接給出答案:注釋掉cookies_enabled

解釋cookies_enabled作用:

補充:**********中介軟體下如何實現請求攜帶cookie

在scrapy專案中的middlewares檔案中新增如下**:

class

cookiemiddleware

(object):

def__init__

(self)

: self.coll = db.conn[

'book_rwyxw_crawl'][

'login_cookies'

]def

process_request

(self, request, spider)

:if spider.name ==

'refer_detail_spider'

: cookie_str =

str(self.coll.find_one(,)

['cookies'])

cookie_list = cookie_str.split(

'=')

print

(cookie_list[0]

, cookie_list[1]

[:-1

])request.cookies =

上面的**,不用具體糾結是什麼意思(這是我從mongo裡拿對應賬戶的cookie),你只要知道建立乙個中介軟體類cookiemiddleware(名字隨便), 然後在定義的process_request方法中寫你新增cookies的邏輯就好。

注意:通常返回給你的cookie是乙個像下面的字串,你需要去切分出來,給request.cookies傳遞字典或者json格式的資料

jsessionid=

7e13ffca22b71b3b28cbd397163ab5d4

; uniqueid=dyr5oycudc2pg6og1604986933643; sites=_20003; right_status=

1; left_status=

0; undefined_vq=

192

下面函式為將cookies字串轉化成dict

def

transform

(cookies)

: cookie_dict =

cookies = cookies.replace(

' ','')

lis = cookies.split(

';')

for i in lis:

key = i.split(

'=')[0

] value = i.split(

'=')[1

] cookies_dict[key]

= value

return cookies_dict

javascript 設定和獲取cookie

在做專案的時候需要在前端獲取和設定cookie,原本想用jquery.cookie.js,但是懶得引入指令碼,就在js檔案裡直接使用了js的函式來呼叫。function getcookie cname return 呼叫 getcookie name function setcookie c nam...

js中設定cookie以及獲取cookie

當使用者訪問 web 頁面時,他的名字可以記錄在 cookie 中。在使用者下一次訪問該頁面時,可以在 cookie 中讀取使用者訪問記錄。cookie 以名 值對形式儲存 js中可以通過document.cookie屬性來建立,讀取以及刪除cookie document.cookie userna...

jQuery設定 獲取瀏覽器會話Cookie

jquery 段可為使用者會話設定 獲取瀏覽器cookie。當使用者單擊某些內容時,這可以用於儲存檢視狀態。下面的示例顯示cookie被儲存以儲存元素的可見性。event to hide element element hide cookie cookie name not in view even...