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 08 Python
浅析Python中的多重继承
Apr 28 Python
import的本质解析
Oct 30 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
Aug 14 Python
Python3 chardet模块查看编码格式的例子
Aug 14 Python
Pytorch 实现自定义参数层的例子
Aug 17 Python
python 消费 kafka 数据教程
Dec 21 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
pytorch实现手写数字图片识别
May 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文件操作之小型留言本实例
2015/06/20 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
禁止直接访问php文件代码分享
2020/05/05 PHP
Javascript中eval函数的使用方法与示例
2007/04/09 Javascript
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
2012/03/01 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
python解析xml文件实例分析
2015/05/27 Python
使用url_helper简化Python中Django框架的url配置教程
2015/05/30 Python
python更新列表的方法
2015/07/28 Python
python实现将内容分行输出
2015/11/05 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
JS设计模式之责任链模式实例详解
2018/02/03 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Django实现单用户登录的方法示例
2019/03/28 Python
Python partial函数原理及用法解析
2019/12/11 Python
Django Admin设置应用程序及模型顺序方法详解
2020/04/01 Python
基于python计算并显示日间、星期客流高峰
2020/05/07 Python
python保留格式汇总各部门excel内容的实现思路
2020/06/01 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
FC-Moto瑞典:欧洲最大的摩托车服装和头盔商店之一
2018/11/27 全球购物
幼儿园数学教学反思
2014/02/02 职场文书
趣味运动会策划方案
2014/06/02 职场文书
导游词之峨眉山
2019/12/16 职场文书
php中pcntl_fork详解
2021/04/01 PHP
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server