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模块顶层运行的代码引起的一个Bug
Jul 04 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
django自带的server 让外网主机访问方法
May 14 Python
python3 实现验证码图片切割的方法
Dec 07 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
使用python的pandas为你的股票绘制趋势图
Jun 26 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
Dec 09 Python
Windows下python3安装tkinter的问题及解决方法
Jan 06 Python
python Tensor和Array对比分析
Jan 08 Python
如何用python批量调整视频声音
Dec 22 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缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
php计算整个mysql数据库大小的方法
2015/06/19 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jQuery ctrl+Enter shift+Enter实现代码
2010/02/07 Javascript
汉化英文版的Dreamweaver CS5并自动提示jquery
2010/11/25 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
2011/09/13 Javascript
深入探讨前端框架react
2015/12/09 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
详解wepy开发小程序踩过的坑(小结)
2019/05/22 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Antd的Table组件嵌套Table以及选择框联动操作
2020/10/24 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
python中Flask框架简单入门实例
2015/03/21 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
python字典一键多值实例代码分享
2019/06/14 Python
django认证系统实现自定义权限管理的方法
2019/08/28 Python
python调用接口的4种方式代码实例
2019/11/19 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
django 模型中的计算字段实例
2020/05/19 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
澳大利亚领先的睡衣品牌:Peter Alexander
2016/08/16 全球购物
澳大利亚礼品篮网站:Macarthur Baskets
2019/10/14 全球购物
NICKIS.com荷兰:设计师儿童时装
2020/01/08 全球购物
2015年共青团工作总结
2015/05/15 职场文书
放假通知怎么写
2015/08/18 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫