Python实现登录人人网并抓取新鲜事的方法


Posted in Python onMay 11, 2015

本文实例讲述了Python实现登录人人网并抓取新鲜事的方法。分享给大家供大家参考。具体如下:

这里演示了Python登录人人网并抓取新鲜事的方法(抓取后的排版不太美观~~)

from sgmllib import SGMLParser
import sys,urllib2,urllib,cookielib
class spider(SGMLParser):
  def __init__(self,email,password):
    SGMLParser.__init__(self)
    self.h3=False
    self.h3_is_ready=False
    self.div=False
    self.h3_and_div=False
    self.a=False
    self.depth=0
    self.names=""
    self.dic={}  
    self.email=email
    self.password=password
    self.domain='renren.com'
    try:
      cookie=cookielib.CookieJar()
      cookieProc=urllib2.HTTPCookieProcessor(cookie)
    except:
      raise
    else:
      opener=urllib2.build_opener(cookieProc)
      urllib2.install_opener(opener)    
  def login(self):
    url='http://www.renren.com/PLogin.do'
    postdata={
         'email':self.email,
         'password':self.password,
         'domain':self.domain 
         }
    req=urllib2.Request(
              url,
              urllib.urlencode(postdata)      
              )
    self.file=urllib2.urlopen(req).read()
    #print self.file
  def start_h3(self,attrs):
    self.h3 = True
  def end_h3(self):
    self.h3=False
    self.h3_is_ready=True
  def start_a(self,attrs):
    if self.h3 or self.div:
      self.a=True
  def end_a(self):
    self.a=False
  def start_div(self,attrs):
    if self.h3_is_ready == False:
      return
    if self.div==True:
      self.depth += 1
    for k,v in attrs:
      if k == 'class' and v == 'content':
        self.div=True;
        self.h3_and_div=True  #h3 and div is connected
  def end_div(self):
    if self.depth == 0:
      self.div=False
      self.h3_and_div=False
      self.h3_is_ready=False
      self.names=""
    if self.div == True:
      self.depth-=1
  def handle_data(self,text):
    #record the name
    if self.h3 and self.a:
      self.names+=text
    #record says
    if self.h3 and (self.a==False):
      if not text:pass
      else: self.dic.setdefault(self.names,[]).append(text)
      return
    if self.h3_and_div:
      self.dic.setdefault(self.names,[]).append(text)
  def show(self):
    type = sys.getfilesystemencoding()
    for key in self.dic:
      print ( (''.join(key)).replace(' ','')).decode('utf-8').encode(type), \
         ( (''.join(self.dic[key])).replace(' ','')).decode('utf-8').encode(type)
renrenspider=spider('your email','your password')
renrenspider.login()
renrenspider.feed(renrenspider.file)
renrenspider.show()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python实现排序算法
Feb 14 Python
python获得两个数组交集、并集、差集的方法
Mar 27 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
Python 调用Java实例详解
Jun 02 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
Python实现的单向循环链表功能示例
Nov 10 Python
python 批量修改/替换数据的实例
Jul 25 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
python查找重复图片并删除(图片去重)
Jul 16 Python
jupyter notebook快速入门及使用详解
Nov 13 Python
python3中编码获取网页的实例方法
Nov 16 Python
python实现中文输出的两种方法
May 09 #Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 #Python
Python遍历指定文件及文件夹的方法
May 09 #Python
Python使用chardet判断字符编码
May 09 #Python
python操作ie登陆土豆网的方法
May 09 #Python
Python检测QQ在线状态的方法
May 09 #Python
python常见数制转换实例分析
May 09 #Python
You might like
星际原理概述
2020/03/04 星际争霸
PHP面向对象编程快速入门
2006/12/14 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php调用C代码的实现方法
2014/03/11 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
javascript数组详解
2014/10/22 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
jQuery实现手机版页面翻页效果的简单实例
2016/10/05 Javascript
JavaScript中三个等号和两个等号你了解多少
2017/07/04 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
vue中本地静态图片路径写法
2018/03/06 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Vue组件系列开发之模态框
2019/04/18 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
python数据结构之二叉树的遍历实例
2014/04/29 Python
python命令行参数解析OptionParser类用法实例
2014/10/09 Python
Python实现简单状态框架的方法
2015/03/19 Python
Python脚本实现虾米网签到功能
2016/04/12 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
2018/01/04 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
python 实现多维数组转向量
2019/11/30 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
犯错检讨书
2014/02/21 职场文书
校园标语大全
2014/06/19 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2015年纪委工作总结
2015/05/13 职场文书
Python中22个万用公式的小结
2021/07/21 Python