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 06 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
May 11 Python
学习Python selenium自动化网页抓取器
Jan 20 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
Python用for循环实现九九乘法表
May 31 Python
实用自动化运维Python脚本分享
Jun 04 Python
python中join()方法介绍
Oct 11 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
python隐藏类中属性的3种实现方法
Dec 19 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
Python实现简单的猜单词小游戏
Oct 28 Python
python自动生成证件号的方法示例
Jan 14 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的知识
2006/11/17 PHP
基于PHP中的常用函数回顾
2013/07/11 PHP
如何使用php输出时间格式
2013/08/31 PHP
PHP启动windows应用程序、执行bat批处理、执行cmd命令的方法(exec、system函数详解)
2014/10/20 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
用javascript操作xml
2006/11/04 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
2015/06/18 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Angularjs中的ui-bootstrap的使用教程
2017/02/19 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
基于Vue-cli快速搭建项目的完整步骤
2018/11/03 Javascript
vue项目首屏加载时间优化实战
2019/04/23 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
python实现隐马尔科夫模型HMM
2018/03/25 Python
python递归全排列实现方法
2018/08/18 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
软件测试工程师面试问题精选
2016/10/28 面试题
乡镇挂职心得体会
2014/09/04 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
公务员个人年终总结
2015/02/12 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
python创建字典及相关管理操作
2022/04/13 Python