python scrapy 模拟登录(手动登录保存cookie)

先登录网页,获取cookie,然后转化为字典,保存在settings.py中的COOKIES池中,使用中间件用cookie登录。

1、cookie,转化为字典
def cookieChangeToDict(cookie):
'''
将cookie字符串转换成字典
:param cookie: 登录后的cookie
:return:字典
'''
cookieList = cookie.split(';')
cookieDict = {}
for cookie in cookieList:
name = cookie.split('=', maxsplit=1)[0].strip()
value = cookie.split('=', maxsplit=1)[1].strip()
cookieDict[name] = value
return cookieDict

if name == 'main':
cookie = """
你的cookie
"""
print(cookieChangeToDict(cookie))

把打印出的cookie放到settings.py中自定义的COOKIES=[]中

2、使用登录后的cookie发送请求
方式一:

可以重写Spider类的start_requests方法,附带Cookie值,发送POST请求

def start_requests(self):
    url= ''
    return [scrapy.FormRequest(url, cookies = self.cookies, callback = self.parse)]

方式2:使用中间件:

from scrapy import signals
from scrapy.downloadermiddlewares.cookies import CookiesMiddleware
import random

from renren.settings import COOKIES

class RandomCookieMiddleware(CookiesMiddleware):
'''
随机cookie池
'''
def process_request(self, request, spider):
cookie = random.choice(COOKIES)
request.cookies = cookie

在settings.py中设置:

ROBOTSTXT_OBEY = False

COOKIES_ENABLED = True

启用中间件

DOWNLOADER_MIDDLEWARES = {
'renren.middlewares.RandomCookieMiddleware': 543,
}

COOKIES池

COOKIES = [
]

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容