范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Python爬虫入门五之Cookie的使用

  大家好!上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下 Cookie 的使用。 为什么要使用 Cookie 呢? Cookie,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用 Urllib2 库保存我们登录的 Cookie,然后再抓取其他页面就达到目的了。 在此之前呢,我们必须先介绍一个 opener 的概念。 1.Opener
  当你获取一个 URL 你使用一个 opener (一个 urllib2.OpenerDirector 的实例)。在前面,我们都是使用的默认的 opener,也就是 urlopen。它是一个特殊的 opener,可以理解成 opener 的一个特殊实例,传入的参数仅仅是 url,data,timeout。 如果我们需要用到 Cookie,只用这个 opener 是不能达到目的地,所以我们需要创建更一般的 opener 来实现对 Cookie 的设置。 2.Cookielib
  cookielib 模块的主要作用是提供可存储 cookie 的对象,以便于与 urllib2 模块配合使用来访问 Internet 资源。Cookielib 模块非常强大,我们可以利用本模块的 CookieJar 类的对象来捕获 cookie 并在后续连接请求时重新发送,比如可以实现模拟登录功能。该模块主要的对象有 CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。 它们的关系:CookieJar —— 派生 ——>FileCookieJar —— 派生 ——->MozillaCookieJar 和 LWPCookieJar 1)获取 Cookie 保存到变量
  首先,我们先利用 CookieJar 对象实现获取 cookie 的功能,存储到变量中,先来感受一下 import urllib2 import cookielib #声明一个CookieJar对象实例来保存cookie cookie = cookielib.CookieJar() #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器 handler=urllib2.HTTPCookieProcessor(cookie) #通过handler来构建opener opener = urllib2.build_opener(handler) #此处的open方法同urllib2的urlopen方法,也可以传入request response = opener.open("http://www.baidu.com") for item in cookie:     print "Name = "+item.name     print "Value = "+item.value
  我们使用以上方法将 cookie 保存到变量中,然后打印出了 cookie 中的值,运行结果如下 Name = BAIDUID Value = B07B663B645729F11F659C02AAE65B4C:FG=1 Name = BAIDUPSID Value = B07B663B645729F11F659C02AAE65B4C Name = H_PS_PSSID Value = 12527_11076_1438_10633 Name = BDSVRTM Value = 0 Name = BD_HOME Value = 02)保存 Cookie 到文件
  在上面的方法中,我们将 cookie 保存到了 cookie 这个变量中,如果我们想将 cookie 保存到文件中该怎么做呢?这时,我们就要用到 FileCookieJar 这个对象了,在这里我们使用它的子类 MozillaCookieJar 来实现 Cookie 的保存 import cookielib import urllib2  #设置保存cookie的文件,同级目录下的cookie.txt filename = "cookie.txt" #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件 cookie = cookielib.MozillaCookieJar(filename) #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器 handler = urllib2.HTTPCookieProcessor(cookie) #通过handler来构建opener opener = urllib2.build_opener(handler) #创建一个请求,原理同urllib2的urlopen response = opener.open("http://www.baidu.com") #保存cookie到文件 cookie.save(ignore_discard=True, ignore_expires=True)
  关于最后 save 方法的两个参数在此说明一下: 官方解释如下:
  ignore_discard: save even cookies set to be discarded. ignore_expires: save even cookies that have expiredThe file is overwritten if it already exists
  由此可见,ignore_discard 的意思是即使 cookies 将被丢弃也将它保存下来,ignore_expires 的意思是如果在该文件中 cookies 已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为 True。运行之后,cookies 将被保存到 cookie.txt 文件中,我们查看一下内容,附图如下
  3)从文件中获取 Cookie 并访问
  那么我们已经做到把 Cookie 保存到文件中了,如果以后想使用,可以利用下面的方法来读取 cookie 并访问网站,感受一下 import cookielib import urllib2  #创建MozillaCookieJar实例对象 cookie = cookielib.MozillaCookieJar() #从文件中读取cookie内容到变量 cookie.load("cookie.txt", ignore_discard=True, ignore_expires=True) #创建请求的request req = urllib2.Request("http://www.baidu.com") #利用urllib2的build_opener方法创建一个opener opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) response = opener.open(req) print response.read()
  设想,如果我们的 cookie.txt 文件中保存的是某个人登录百度的 cookie,那么我们提取出这个 cookie 文件内容,就可以用以上方法模拟这个人的账号登录百度。 4)利用 cookie 模拟网站登录
  下面我们以我们学校的教育系统为例,利用 cookie 实现模拟登录,并将 cookie 信息保存到文本文件中,来感受一下 cookie 大法吧! 注意:密码我改了啊,别偷偷登录本宫的选课系统哦 import urllib import urllib2 import cookielib  filename = "cookie.txt" #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件 cookie = cookielib.MozillaCookieJar(filename) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) postdata = urllib.urlencode({ 			"stuid":"201200131012", 			"pwd":"23342321" 		}) #登录教务系统的URL loginUrl = "http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bks_login2.login" #模拟登录,并把cookie保存到变量 result = opener.open(loginUrl,postdata) #保存cookie到cookie.txt中 cookie.save(ignore_discard=True, ignore_expires=True) #利用cookie请求访问另一个网址,此网址是成绩查询网址 gradeUrl = "http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bkscjcx.curscopre" #请求访问成绩查询网址 result = opener.open(gradeUrl) print result.read()
  以上程序的原理如下 创建一个带有 cookie 的 opener,在访问登录的 URL 时,将登录后的 cookie 保存下来,然后利用这个 cookie 来访问其他网址。 如登录之后才能查看的成绩查询呀,本学期课表呀等等网址,模拟登录就这么实现啦,是不是很酷炫? 好,小伙伴们要加油哦!我们现在可以顺利获取网站信息了,接下来就是把网站里面有效内容提取出来,下一节我们去会会正则表达式!

奇瑞瑞虎7PLUS曝光,奇瑞这速度起飞了,新车频出近日,网上曝光了奇瑞瑞虎7plus的几组照片,目前还没有官方的消息出来。这个速度真是让人有点意外,毕竟4月底刚刚发布了瑞虎7超能版。看来,技术积累足够的奇瑞,下半年可以给大家带来更好家伙,星途追风来了,新款1。5T的星途LX,又来一个不一样的前脸近日,网络曝光了新款奇瑞高端品牌星途LX的1。5T版本的图片,尾部喷涂了星途追风的字样,这也与申报的星途系列命名中文化相符合。先从星途揽月(星途VX)星途凌云(星途TXL)星途追风打脸上汽的灵魂,华为与大众达成专利许可协议华为与7月7日,宣布已与大众汽车集团(大众)的一个供应商达成专利许可协议。华为汽车该协议包括华为4G标准必要专利(SEP)许可,涵盖装有无线连接功能的大众汽车。该协议是迄今为止华为星越S领先上市,星越L7月20日杭州上市吉利汽车的星越S已经上市,领先了曝光时间早于自己的大哥星越L。这也很好理解,星越L毕竟是全新的车型,而星越S其实就是星越的小改款车型。星越S星越S本次上市4个版本,全系升级到2。0价格公布15。9万起,全新奇瑞星途TXL预订开启今天,星途官方公布了2条关于星途TXL的信息,第一个所谓的中文征名活动,最终星途凌云高票当选,星途TXL全新400T命名为星途凌云。第二个,从今天开开启预订,全新车型159000元奇瑞捷途品牌独立,新车颜值吊打瑞虎星途,捷途X搭载华为技术捷途在昨天晚上的北京捷途品牌之夜上,正式宣布捷途品牌独立,由奇瑞控股的捷途产品序列,成长为奇瑞控股的捷途汽车,算是成人了,可以自立门户了。捷途品牌之夜活动发布了最新的昆仑架构的概念好家伙,五菱mini又来了,与宏观mini一起占领微型电动汽车市场在工信部的申报道路机动车辆生产企业及产品公告(第346批)的车辆新产品公示清单中,再次出现了五菱mini的身影。先来看看颜值吧五菱坊间流传的老百姓需要啥,五菱就生产啥,五菱宏光mi瑞虎8鲲鹏版明天上市,看看瑞虎8的销量,奇瑞还需继续努力瑞虎8鲲鹏版明天瑞虎8鲲鹏版就要上市了,宣传海报中请了乒乓球前世界冠军张继科,九球天后,乐队南征北战等造势。这次上市的重点车型就是搭载最牛的2。0T发动机的390T车型。该发动机有吉利汽车半年报,销量630,237同比增长19,星越L预售超2万辆吉利汽车公布了2021年的半年报。2021年16月销量达到630,237,同比增长19,连续4年,蝉联中国品牌乘用车销量冠军。吉利汽车公布了2021年6月份100,063辆。其中C长城欧拉樱桃猫申报,长城猫家族再添公主工信部公示的申报道路机动车辆生产企业及产品公告(第346批)的车辆新产品公示清单中,长城汽车的欧拉樱桃猫申报信息曝光。欧拉的猫家族,再添一枚公主。从申报图来看,欧拉樱桃猫的外形更接同价位的星越L第三代哈弗H6瑞虎8鲲鹏版该如何选择吉利全新的旗舰SUV星越L昨天晚上在杭州全球发布了,价格及购买福利公布后,还是让很多消费者非常心动的。对比提前3天发布的奇瑞瑞虎8鲲鹏版,还有常年的SUV销量冠军第三代哈弗H6,大
编程英语单词幸福编程之英语学习篇。英语单词学习打卡第一天!程序员在日常程序编写过程中有一件简单而让人头疼的事,那就是命名变量,虽然有些编程语言支持使用中文来命名变量,但是程序开发过程中不推荐使360手机卫士推出拦截网购诈骗网站新功能随着双十一抢购热潮的结束,根据以往经验判断,在未来的几天至十几天的时间里,往往是网络诈骗的高峰期。钓鱼网站挂马网站冒充网站二维码扫描或冒充店铺工作人员等诈骗方式层出不穷。为此,近日你喜欢手机还是单反的拍照效果?一般都是用手机拍照,手机方便随时从衣服包里拿出来照像和摄像,照好发给头条和微信那是非常方便。单反相机是专门照人像要洗出像片出来更好,效果比手机更明更有层次感,像素比手机还是要好太多银河系与仙女座星系终将上演惊天大碰撞,太阳系真的会平安无事吗?在宇宙当中天体之间的碰撞是最为常见的事情了。地球就是在不断的碰撞中形成的。从某种意义上讲碰撞不是毁灭而是重生。50亿年后太阳变成了红巨星,就会严重威胁着地球上的人类的生存。可是你知有人说金星距离地球比较近,为什么人类不选择登陆金星?其实人类是先选择去了探索金星之后,发现一再失望,才最终把主要精力放在火星上。探索之前其实,如果不到金星和火星金星探测。科学家也会认为去金星远比去火星划算。我们可以对比一些数据就会知华为与长安的智能电动汽车合作伙伴关系扩展到包括芯片四位知情人士表示,中国的华为技术有限公司(HWT。UL)正在扩大与国有的重庆长安汽车有限公司的电动智能汽车合作伙伴关系,以及包括汽车用半导体的设计和开发。两位消息人士称,这两家公司网商银行逐步停止支付宝余额转入功能新京报贝壳财经讯(记者潘亦纯)4月19日,针对网商银行暂停支付宝转入功能这一消息,网商银行方面回应贝壳财经记者称,公司基于业务规则调整,逐步停止支付宝余额转入的功能,同时,仅支持本哪些行业场景天然适配小程序?小程序的定位是即用即走的服务,对用户的粘性较弱,特别适合工具类行业的应用场景。场景1健康码类场景健康码属于用户需要查询某类信息的场景,查询得到该信息即完成目标。如果使用公众号H5来有人说互联网行业的冬天来了,你怎么看?互联网行业未来的发展前景怎么样?目前这个时候不是互联网行业的冬天来了,而是经济危机的寒冬来了,冬天来了就不只是针对某一个行业,而是大环境,主要原因是1每隔10年一次的经济周期,使经济发展到了一个拐点,前面的高速发工业富联又出手,4个月投资额接近去年全年4倍!青睐这类项目长期扎根先进制造与工业互联网领域的工业富联(601138)开始加码对外投资业务,新设私募公司,最新完成思灵机器人独家战略投资,且今年以来其对外投资金额已超百亿元,接近去年全年投资总比特币重回40,000美元这是接下来可能发生的事情最近几周,加密货币市场出现了一些重大挫折。BTC受到市场萎缩的打击。在3月下旬达到2022年4。9万美元的峰值之后,该资产此后持续下滑,让投资者对其下一站持矛盾态度。在持续下跌之后