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实现的下载网页源码功能示例
Jun 13 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
PyQt5每天必学之布局管理
Apr 19 Python
Python之文字转图片方法
May 10 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
pytorch多GPU并行运算的实现
Sep 27 Python
使用python实现对元素的长截图功能
Nov 14 Python
python实现回旋矩阵方式(旋转矩阵)
Dec 04 Python
Python使用Excel将数据写入多个sheet
May 16 Python
Python实现爬取网页中动态加载的数据
Aug 17 Python
PyCharm最新激活码(2020/10/27全网最新)
Oct 27 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 时间转换Unix时间戳代码
2010/01/22 PHP
php 网上商城促销设计实例代码
2012/02/17 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
PHP中STDCLASS用法实例分析
2016/11/11 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
javascript中select下拉框的用法总结
2016/01/07 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
微信小程序实现留言板
2018/10/31 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
React+Redux实现简单的待办事项列表ToDoList
2019/09/29 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
在antd4.0中Form使用initialValue操作
2020/11/02 Javascript
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python进程间通信Queue消息队列用法分析
2019/05/22 Python
如何基于Python实现自动扫雷
2020/01/06 Python
django admin 添加自定义链接方式
2020/03/11 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
华为的Java面试题
2014/03/07 面试题
时尚休闲吧创业计划书
2014/01/25 职场文书
太太口服液广告词
2014/03/20 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
让生命充满爱观后感
2015/06/08 职场文书
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫
Vue3中toRef与toRefs的区别
2022/03/24 Vue.js
代码复现python目标检测yolo3详解预测
2022/05/06 Python