立即注册

编程论坛

广告联系qq1031180668广告位
查看: 396|回复: 1

[python] urllib携带cookie爬取网页

[复制链接]
  • ta_mind
    擦汗
    2019-3-27 07:25
  • classn_01: 72 classn_02

    [LV.6]常住居民II

    1018

    主题

    1739

    帖子

    3533

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    3533

    最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

    发表于 2018-7-25 02:53:49 | 显示全部楼层 |阅读模式
    Cookie
    Cookie 是指某些网站服务器为了辨别用户身份和进行Session跟踪,而储存在用户浏览器上的文本文件,Cookie可以保持登录信息到用户下次与服务器的会话。
    Cookie原理
    HTTP是无状态的面向连接的协议, 为了保持连接状态, 引入了Cookie机制 Cookie是http消息头中的一种属性,包括:
    Cookie名字(Name)Cookie的值(Value)Cookie的过期时间(Expires/Max-Age)Cookie作用路径(Path)Cookie所在域名(Domain),使用Cookie进行安全连接(Secure)。前两个参数是Cookie应用的必要条件,另外,还包括Cookie大小(Size,不同浏览器对Cookie个数及大小限制是有差异的)。
    Cookie由变量名和值组成,根据 Netscape公司的规定,Cookie格式如下:
    Set-Cookie: NAME=VALUE;Expires=DATE;Path=PATH;Domain=DOMAIN_NAME;SECURE
    Cookie应用
    Cookies在爬虫方面最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续。
    以c++技术网为例,这个是用户中心的url:http://www.cjjjs.com/user/usercenter.html,登录后访问这个页面,同时抓包。

    urllib携带cookie爬取网页

    urllib携带cookie爬取网页
    利用抓包工具获取cookie:

    urllib携带cookie爬取网页

    urllib携带cookie爬取网页
    获取cookie后用urllib完成爬取:
    [Python] syntaxhighlighter_viewsource syntaxhighlighter_copycode
    '''
    dm=true; ASP.NET_SessionId=jkvdctbu5mjtwm55c422nkvz; safedog-flow-item=; dm=true; user_id=121058; Hm_lvt_06ef230bb917074db1e332556a08ae9c=1532113074,1532151658,1532258871,1532454653; Hm_lpvt_06ef230bb917074db1e332556a08ae9c=1532457922
    '''
    import urllib.request
    
    #需要爬取的url
    url="http://www.cjjjs.com/user/usercenter.html"
    #构建一个已经登陆过的用户headers信息(带cookie的headers)
    headers={
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36",
        "cookie":"dm=true; ASP.NET_SessionId=jkvdctbu5mjtwm55c422nkvz; safedog-flow-item=; dm=true; user_id=121058; Hm_lvt_06ef230bb917074db1e332556a08ae9c=1532113074,1532151658,1532258871,1532454653; Hm_lpvt_06ef230bb917074db1e332556a08ae9c=1532457922"
    }
    #通过headers里的报头信息(主要是Cookie信息),构建Request对象
    req=urllib.request.Request(url,headers=headers)
    #访问需要爬去的页面
    response=urllib.request.urlopen(req)
    #打印获取的数据
    print(response.read().decode("utf-8"))
    通过查看网页响应内容可以看出成功访问到了需要登录才可以查看的信息。
    网页返回信息.png




    用户中心页面.png
    不积跬步,无以至千里

    classn_11

    0

    主题

    42

    帖子

    88

    积分

    注册会员

    Rank: 2

    积分
    88
    发表于 2018-8-13 14:39:39 | 显示全部楼层
    回复

    使用道具 举报

    游客
    回复
    您需要登录后才可以回帖 登录 | 立即注册

    手机版|Archiver|小黑屋|sitemap| 编程论坛 - 一个单纯的编程学习交流论坛 ( 豫ICP备15032706号 )

    GMT+8, 2019-6-19 01:33 , Processed in 1.107025 second(s), 27 queries .

    Powered by Discuz! X3.4

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表