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实现解数独程序代码
Apr 12 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 Python
每天迁移MySQL历史数据到历史库Python脚本
Apr 13 Python
python3结合openpyxl库实现excel操作的实例代码
Sep 11 Python
Python设计模式之解释器模式原理与用法实例分析
Jan 10 Python
python实现多张图片拼接成大图
Jan 15 Python
Python简单处理坐标排序问题示例
Jul 11 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Python中os模块功能与用法详解
Feb 26 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
Python如何截图保存的三种方法(小结)
Sep 01 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
oracle资料库函式库
2006/10/09 PHP
PHP 常见郁闷问题答解
2006/11/25 PHP
删除及到期域名的查看(抢域名必备哦)
2008/05/14 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
ubuntu下配置nginx+php+mysql详解
2015/09/10 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JS 跳转页面延迟2种方法
2013/03/29 Javascript
Js base64 加密解密介绍
2013/10/11 Javascript
深入理解JavaScript中的传值与传引用
2013/12/09 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
微信小程序 MD5加密登录密码详解及实例代码
2017/01/12 Javascript
基于vue2.0+vuex+localStorage开发的本地记事本示例
2017/02/28 Javascript
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
vue中进行微博分享的实例讲解
2019/10/14 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
JavaScript console的使用方法实例分析
2020/04/28 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
奥巴马胜选演讲稿
2014/05/15 职场文书
节能标语大全
2014/06/21 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS