python如何利用cookies直接扒取用户登陆过后的网页

      最近在学习python,在利用cookies直接登陆网站,而不用通过账号,密码登陆这一问题上折腾了很久,这里把我在这一过程中遇到的问题及解决方案记录并分享一下

    
     首先,是得到保存有用户登录信息的cookies,这里我使用的是firefox浏览器

     安装Firebug插件,可以很方便的查看网站的所有cookies,并且一键导出。

    
    这里我以csdn网站为例,先通过账号,密码的方式登陆csdn,然后打开Firebug,可以看到下图所示的cookies的列表,在红色箭头所指处,可以导出以下所有的cookies。

       在导出cookies之前,需要先解决一些问题

 

     在上图中红色箭头指向的“会话”这一属性:指的是在浏览器被关闭之后这些cookies信息会被丢弃。

     通过Firebug虽然能够把这些“会话”信息导出,但是在后面python中导入cookies文件时会出错,而且有些“会话”cookies里面保存有与登陆有关的信息,所以在这里将”会话“改变为固定的时间格式。

     在”会话“处右键,选择编辑,如下图所示

     将红色箭头指向的钩点掉,然后才能将“会话”改为时间格式,这里修改的时间随意,只要还没有过期就可以,将所有的“会话”改为时间格式后,将所有的cookies导出,保存为“cookies_csdn.txt”,在txt文档的头部,加入以下代码,让Python的cookielib中的  MozillaCookieJar 能够识别该cookies文件


# Netscape HTTP Cookie File

    接下来在python中,利用cookies直接登陆网页,扒取网页信息

    使用的IDE是PYCharm

  

    新建一个Python File,命名为cookies_use_csdn,代码如下

#-*- coding:utf-8 -*-
import cookielib
import urllib2
import bs4
import re
from bs4 import BeautifulSoup

cookie=cookielib.MozillaCookieJar()#声明一个CookieJar对象实例来保存cookie
cookie.load('cookies_csddn.txt',ignore_discard=False,ignore_expires=False)#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
user_agent='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'#用header保存模拟的请求身份
headers={'User-Agent':user_agent,'Referer':'http://my.csdn.net/'}
url="http://my.csdn.net/"
rq_body = ''
req=urllib2.Request(url,rq_body,headers)
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response=opener.open(req)
print response.read()

    上图中访问的URL为:'http://my.csdn.net/',如果未登录,看到的界面源码如下,会有登录和注册的元素。

      当我们利用cookies,直接到达用户登录状态,再来扒取网页时,就可以看到用户的身份信息了




    如果能够找网页元素中找到上述内容,则证明通过cookies登录成功了!!!


    以上便是分享的内容,有什么问题请指正.










  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值