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 命令行非阻塞输入的小例子
Sep 27 Python
python连接远程ftp服务器并列出目录下文件的方法
Apr 01 Python
详解Python2.x中对Unicode编码的使用
Apr 03 Python
Python requests库用法实例详解
Aug 14 Python
python创建文件时去掉非法字符的方法
Oct 31 Python
Python Excel处理库openpyxl使用详解
May 09 Python
python实现tail -f 功能
Jan 17 Python
Python print不能立即打印的解决方式
Feb 19 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
Python基础之Socket通信原理
Apr 22 Python
Python爬虫基础讲解之请求
May 13 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中的CMS的涵义
2007/03/11 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
PHP基于数组实现的分页函数实例
2014/08/20 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
js form action动态修改方法
2008/11/04 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
2013/11/28 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
使用Angular CLI生成路由的方法
2018/03/24 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
2018/08/10 Javascript
[06:37]2014DOTA2国际邀请赛 昔日王者渴望重回巅峰
2014/07/12 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
python中利用Future对象异步返回结果示例代码
2017/09/07 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python实现回旋矩阵方式(旋转矩阵)
2019/12/04 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
2014年企业党建工作总结
2014/12/18 职场文书
大学四年个人总结
2015/03/03 职场文书
同事打架检讨书
2015/05/06 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python