本文实现cookie的自动获取,及cookie过期自动更新。

社交网站中的很多信息需要登录才能获取到,以微博为例,不登录账号,只能看到大V的前十条微博。保持登录状态,必须要用到Cookie。以登录www.weibo.cn 为例:

在chrome中输入:http://login.weibo.cn/login/

分析控制台的Headers的请求返回,会看到weibo.cn有几组返回的cookie。

实现步骤:

1,采用selenium自动登录获取cookie,保存到文件;

2,读取cookie,比较cookie的有效期,若过期则再次执行步骤1;

3,在请求其他网页时,填入cookie,实现登录状态的保持。

1,在线获取cookie

采用selenium + PhantomJS 模拟浏览器登录,获取cookie;

cookies一般会有多个,逐个将cookie存入以.weibo后缀的文件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def get_cookie_from_network():
    from selenium import webdriver
    url_login = 'http://login.weibo.cn/login/'
    driver = webdriver.PhantomJS()
    driver.get(url_login)
    driver.find_element_by_xpath('//input[@type="text"]').send_keys('your_weibo_accout') # 改成你的微博账号
    driver.find_element_by_xpath('//input[@type="password"]').send_keys('your_weibo_password') # 改成你的微博密码

    driver.find_element_by_xpath('//input[@type="submit"]').click() # 点击登录

    # 获得 cookie信息
    cookie_list = driver.get_cookies()
    print cookie_list

    cookie_dict = {}
    for cookie in cookie_list:
        #写入文件
        f = open(cookie['name']+'.weibo','w')
        pickle.dump(cookie, f)
        f.close()

        if cookie.has_key('name') and cookie.has_key('value'):
            cookie_dict[cookie['name']] = cookie['value']

    return cookie_dict

2,从文件中获取cookie

从当前目录中遍历以.weibo结尾的文件,即cookie文件。采用pickle解包成dict,比较expiry值与当前时间,若过期则返回为空;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def get_cookie_from_cache():

    cookie_dict = {}
    for parent, dirnames, filenames in os.walk('./'):
        for filename in filenames:
            if filename.endswith('.weibo'):
                print filename
                with open(self.dir_temp + filename, 'r') as f:
                    d = pickle.load(f)

                    if d.has_key('name') and d.has_key('value') and d.has_key('expiry'):
                        expiry_date = int(d['expiry'])
                        if expiry_date > (int)(time.time()):
                            cookie_dict[d['name']] = d['value']
                        else:
                            return {}

    return cookie_dict

3,若缓存cookie过期,则再次从网络获取cookie

1
2
3
4
5
6
7
def  get_cookie():

    cookie_dict = get_cookie_from_cache()
    if not cookie_dict:
        cookie_dict = get_cookie_from_network()

    return cookie_dict

4,带cookie请求微博其他主页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def get_weibo_list(self, user_id):
    import requests
    from bs4 import BeautifulSoup as bs

    cookdic = get_cookie()

    url = 'http://weibo.cn/stocknews88'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36'}
    timeout = 5
    r = requests.get(url, headers=headers, cookies=cookdic,timeout=timeout)
    soup = bs(r.text, 'lxml')

    ...
    # 用BeautifulSoup 解析网页
    ...

网页爬虫之cookie自动获取相关推荐

  1. python爬虫模块取cookie_Python爬虫之cookie的获取、保存和使用【新手必学】

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:huhanghao Cookie,指某些网站为了辨别用户身份.进行s ...

  2. python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取

    1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...

  3. Python带你轻松进行网页爬虫

    前不久DotNet开源大本营通过为.NET程序员演示如何在.NET下使用C#+HtmlAgilityPack+XPath进行网页数据的抓取,从而为我们展示了HtmlAgilitypack利器的优点和使 ...

  4. python制作查询网页_Python制作简单的网页爬虫

    1.准备工作: 工欲善其事必先利其器,因此我们有必要在进行Coding前先配置一个适合我们自己的开发环境,我搭建的开发环境是: 操作系统:Ubuntu 14.04 LTS Python版本:2.7.6 ...

  5. python制作简单网页_Python制作简单的网页爬虫

    1.准备工作: 工欲善其事必先利其器,因此我们有必要在进行Coding前先配置一个适合我们自己的开发环境,我搭建的开发环境是: 操作系统:Ubuntu 14.04 LTS Python版本:2.7.6 ...

  6. 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)

    文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...

  7. Scrapy爬虫+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单

    此货很干,跟上脚步!!! Cookie cookie是什么东西? 小饼干?能吃吗? 简单来说就是你第一次用账号密码访问服务器 服务器在你本机硬盘上设置一个身份识别的会员卡(cookie) 下次再去访问 ...

  8. python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...

    关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...

  9. Python简单网页爬虫——极客学院视频自动下载

    一.需求背景 最近正好在研究Python,看了菜鸟教程上的基本教程,然后又再看极客学院的教学视频,向实战进军. 极客学院的视频是需要年费会员才能下载的,客户端倒是可以批量下载,但是下载之后,没有目录结 ...

最新文章

  1. docker 容器查看命令的基础使用方法一
  2. dex文件结构(一):dex文件结构
  3. 设为首页及收藏本页代码 兼容IE和Firefox
  4. 2020年日历_2020年《故宫日历》发布 纪念紫禁城建成六百年
  5. 选择Bean 实例化策略
  6. arggis怎么修改上下标_京东自营是怎么操作的?有什么要求?
  7. Java设计模式12:装饰器模式
  8. Spring-AOP概念及使用教程
  9. 图像处理基本算法之空间域图像增强
  10. java保存图书每日的交易记录
  11. 2020 OpenInfra Days China 圆满落幕,100+ 全球大咖共话开源基础设施智未来
  12. Beyond Compare 怎么新增与卸载文件格式
  13. HttpServletResponse(打开图片)
  14. 根号智能计算机在线,科学计算器在线的多次根号怎么用?
  15. 纯MSDOS操作系统下的计算机重启与关机
  16. UWB定位系统会存在定位误差吗?
  17. 给discuz x增加后台菜单管理功能
  18. Qt播放HTML网页视频
  19. Ubuntu20.04切换阿里源镜像(清华源、网易源)
  20. 正则表达式(手机号前带区号)

热门文章

  1. php 企业建站系统,QCMS PHP轻量级企业建站系统 v5.0.2
  2. html5 励志名言,经典励志名言(五)
  3. 恢复出厂设置后, 时间没有恢复
  4. 七日杀unity报错_七日杀地形生成错误 | 手游网游页游攻略大全
  5. 分布式技术点和技术趋势
  6. 盘点2017年崛起的那些 JS 项目
  7. 如何免费把vcf文件转换成excel格式
  8. 大话2服务器维护,大话西游2维护公告 听天由命与幻化技能增强
  9. 大理大学计算机专业全国排名,大理大学(专业学位)计算机技术考研难吗
  10. 预产期计算器在线计算生男生女计算机,预产期计算器生男生女方法(附预测表)...