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在linux系统下获取系统内存使用情况的方法
May 11 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
详解python字节码
Feb 07 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
python 地图经纬度转换、纠偏的实例代码
Aug 06 Python
解决pycharm工程启动卡住没反应的问题
Jan 19 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
Python爬虫教程知识点总结
Oct 19 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
Feb 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+mysql扎实个人基本功
2008/03/27 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
2013/12/14 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
AngularJS1.X学习笔记2-数据绑定详解
2017/04/01 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
运动会广播稿30字
2014/01/21 职场文书
企业办公室岗位职责
2014/03/12 职场文书
保险公司早会主持词
2014/03/22 职场文书
租房合同协议书
2014/04/09 职场文书
幼儿园大班开学寄语
2014/08/02 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
十佳好少年事迹材料
2014/08/21 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
离婚撤诉申请书范本
2015/05/18 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
自荐信范文
2019/05/20 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
使用JS实现简易计算器
2021/06/14 Javascript
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Python echarts实现数据可视化实例详解
2022/03/03 Python