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 相关文章推荐
PHP魔术方法__ISSET、__UNSET使用实例
Nov 25 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python表格存取的方法
Mar 07 Python
Python3 log10()函数简单用法
Feb 19 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
python list多级排序知识点总结
Oct 23 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
pycharm双击无响应(打不开问题解决办法)
Jan 10 Python
Python中格式化字符串的四种实现
May 26 Python
基于Django集成CAS实现流程详解
Nov 28 Python
详解Python调用系统命令的六种方法
Jan 28 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php 伪静态之IIS篇
2014/06/02 PHP
php使用PDO方法详解
2014/12/27 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
JavaScript基础知识学习笔记
2014/12/02 Javascript
javascript数据结构与算法之检索算法
2015/04/04 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
Node.js之删除文件夹(含递归删除)代码实例
2019/09/09 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
python根据路径导入模块的方法
2014/09/30 Python
python多线程用法实例详解
2015/01/15 Python
Python设计模式编程中解释器模式的简单程序示例分享
2016/03/02 Python
python 读写、创建 文件的方法(必看)
2016/09/12 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
django+echart数据动态显示的例子
2019/08/12 Python
python filecmp.dircmp实现递归比对两个目录的方法
2020/05/22 Python
Python join()函数原理及使用方法
2020/11/14 Python
高级Java程序员面试要点
2013/08/02 面试题
公司节能减排倡议书
2014/05/14 职场文书
学术诚信承诺书
2014/05/26 职场文书
中学生秋季运动会广播稿
2014/09/21 职场文书
新闻通讯稿范文
2015/07/22 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书