网页爬虫之cookie自动获取
本文实现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自动获取相关推荐
- python爬虫模块取cookie_Python爬虫之cookie的获取、保存和使用【新手必学】
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:huhanghao Cookie,指某些网站为了辨别用户身份.进行s ...
- python 网页爬虫作业调度_第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业. 4.提供图片或网站显示的学习 ...
- Python带你轻松进行网页爬虫
前不久DotNet开源大本营通过为.NET程序员演示如何在.NET下使用C#+HtmlAgilityPack+XPath进行网页数据的抓取,从而为我们展示了HtmlAgilitypack利器的优点和使 ...
- python制作查询网页_Python制作简单的网页爬虫
1.准备工作: 工欲善其事必先利其器,因此我们有必要在进行Coding前先配置一个适合我们自己的开发环境,我搭建的开发环境是: 操作系统:Ubuntu 14.04 LTS Python版本:2.7.6 ...
- python制作简单网页_Python制作简单的网页爬虫
1.准备工作: 工欲善其事必先利其器,因此我们有必要在进行Coding前先配置一个适合我们自己的开发环境,我搭建的开发环境是: 操作系统:Ubuntu 14.04 LTS Python版本:2.7.6 ...
- 爬虫三(Bs4搜索、Selenium基本使用、无界面浏览器、Selenium自动登录百度案例、自动获取12306登录验证码案例、切换选项卡、浏览器前进后退、登录Cnblogs获取Cookie自动点赞)
文章标题 一.Bs4搜索文档树 二.CSS选择器 三.selenium基本使用 四.无界面浏览器 五.selenium其他使用 1)自动登录百度案例 2)获取位置属性大小.文本 3)自动获取12306 ...
- Scrapy爬虫+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
此货很干,跟上脚步!!! Cookie cookie是什么东西? 小饼干?能吃吗? 简单来说就是你第一次用账号密码访问服务器 服务器在你本机硬盘上设置一个身份识别的会员卡(cookie) 下次再去访问 ...
- python爬虫qq好友信息,GitHub - equationl/QQzone_crawler: QQ 空间动态爬虫,利用cookie登录获取所有可访问好友空间的动态保存到本地...
关于 Edit by equationl 优先在 码云 上更新 该项目修改自 xjr7670 的 QQzone_crawler 原作者说明: QQ空间动态爬虫 修改了什么? 爬取完整的评论列表 爬取点 ...
- Python简单网页爬虫——极客学院视频自动下载
一.需求背景 最近正好在研究Python,看了菜鸟教程上的基本教程,然后又再看极客学院的教学视频,向实战进军. 极客学院的视频是需要年费会员才能下载的,客户端倒是可以批量下载,但是下载之后,没有目录结 ...
最新文章
- docker 容器查看命令的基础使用方法一
- dex文件结构(一):dex文件结构
- 设为首页及收藏本页代码 兼容IE和Firefox
- 2020年日历_2020年《故宫日历》发布 纪念紫禁城建成六百年
- 选择Bean 实例化策略
- arggis怎么修改上下标_京东自营是怎么操作的?有什么要求?
- Java设计模式12:装饰器模式
- Spring-AOP概念及使用教程
- 图像处理基本算法之空间域图像增强
- java保存图书每日的交易记录
- 2020 OpenInfra Days China 圆满落幕,100+ 全球大咖共话开源基础设施智未来
- Beyond Compare 怎么新增与卸载文件格式
- HttpServletResponse(打开图片)
- 根号智能计算机在线,科学计算器在线的多次根号怎么用?
- 纯MSDOS操作系统下的计算机重启与关机
- UWB定位系统会存在定位误差吗?
- 给discuz x增加后台菜单管理功能
- Qt播放HTML网页视频
- Ubuntu20.04切换阿里源镜像(清华源、网易源)
- 正则表达式(手机号前带区号)
热门文章
- php 企业建站系统,QCMS PHP轻量级企业建站系统 v5.0.2
- html5 励志名言,经典励志名言(五)
- 恢复出厂设置后, 时间没有恢复
- 七日杀unity报错_七日杀地形生成错误 | 手游网游页游攻略大全
- 分布式技术点和技术趋势
- 盘点2017年崛起的那些 JS 项目
- 如何免费把vcf文件转换成excel格式
- 大话2服务器维护,大话西游2维护公告 听天由命与幻化技能增强
- 大理大学计算机专业全国排名,大理大学(专业学位)计算机技术考研难吗
- 预产期计算器在线计算生男生女计算机,预产期计算器生男生女方法(附预测表)...