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的numpy模块安装不成功简单解决方法总结
Dec 23 Python
便捷提取python导入包的属性方法
Oct 15 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python 高效去重复 支持GB级别大文件的示例代码
Nov 08 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
python字典的setdefault的巧妙用法
Aug 07 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
Python3的socket使用方法详解
Feb 18 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
Jun 01 Python
接口自动化多层嵌套json数据处理代码实例
Nov 20 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
php,ajax实现分页
2008/03/27 PHP
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
php微信开发之上传临时素材
2016/06/24 PHP
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
合并table相同单元格的jquery插件分享(很精简)
2011/06/20 Javascript
js 代码优化点滴记录
2012/02/19 Javascript
浅谈javascript中createElement事件
2014/12/05 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
优化Python代码使其加快作用域内的查找
2015/03/30 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
Python 编程速成(推荐)
2019/04/15 Python
Python中Numpy mat的使用详解
2019/05/24 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
django 微信网页授权登陆的实现
2019/07/30 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
IdealFit官方网站:女性蛋白质、补充剂和运动服装
2019/03/24 全球购物
橄榄树药房:OLIVEDA
2019/09/01 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?
2016/08/18 面试题
一道Delphi上机题
2012/06/04 面试题
实习护理工作自我评价
2013/09/25 职场文书
给交警的表扬信
2014/01/12 职场文书
幼儿园教学管理制度
2014/02/04 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
《桂花雨》教学反思
2014/04/12 职场文书
志愿者活动总结范文
2014/04/26 职场文书
员工合理化建议书
2014/05/19 职场文书
广告学专业毕业生自荐信
2014/05/28 职场文书
2014年团总支工作总结
2014/11/21 职场文书
歼十出击观后感
2015/06/11 职场文书