返回介绍

14.5 优化措施

发布于 2024-01-26 22:39:51 字数 1303 浏览 0 评论 0 收藏 0

以上几节其实已经完成了项目的所有功能,本小节对上面的内容进行部分优化,优化包括登录成功后对Cookie的存储和cookie登录,添加限速功能,防止被发现。

首先要做的是对Cookie的存储,即将Cookie序列化存储到session.txt中,将这段代码放到parse_user_info方法的开始位置。代码如下:

  if not os.path.exists('session.txt'):
     with open('session.txt','wb') as f:
       import pickle
       cookies = response.request.headers['cookie']
       cookieDict={}
       for cookie in cookies.split(';'):
            key,value = cookie[0:cookie.find('=')], cookie[cookie.find('=')+1:]
            cookieDict[key]=value
       pickle.dump(cookieDict,f)

首先判断文件是否存在,如果不存在,则从request.headers中提取cookie字符串,并将cookie字符串拆分和组装成字段,最后进行序列化存储。存储完毕后,我们需要在start_requests的起始位置加载Cookie,代码如下:

  if os.path.exists('session.txt'):
     with open('session.txt','rb') as f:
       import pickle
       self.cookies = pickle.load(f)
       self.xsrf = self.cookies['_xsrf']
       return [Request(
       self.start_urls[0],
       cookies=self.cookies,
       meta={'cookiejar': 1},
       callback=self.parse_user_info,
       errback=self.parse_err,
     )]

首先判断session.txt是否存在,然后读取cookeis的值,直接通过Cookies构造Request请求,进入起始url解析阶段。

最后进行以下限速的操作,在Settings中设置如下:

  DOWNLOAD_DELAY=2
  AUTOTHROTTLE_ENABLED=True
  AUTOTHROTTLE_START_DELAY=5
  AUTOTHROTTLE_MAX_DELAY=60

大家也可以根据自己的情况设置延时。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文