这个方法抓下来的网页,得不到相册图片,新浪要js动态生成图片,解决方法能够是:1. 本地用webkit跑抓下来的js;2.抓移动版微博的静态相册。 但都暂时未实现,欢迎回帖好方法,如下是转文。

----------------------------------------- php

咱们都知道HTTP是无链接的状态协议,可是客户端和服务器端须要保持一些相互信息,好比cookie,有了cookie,服务器才能知道刚才是这个用户登陆了网站,才会给予客户端访问一些页面的权限。 python

用浏览器登陆新浪微博,必须先登陆,登录成功后,打开其余的网页才可以访问。用程序登陆新浪微博或其余验证网站,关键点也在于须要保存cookie,以后附带cookie再来访问网站,才可以达到效果。 web

这里就须要Python的cookielib和urllib2等的配合,将cookielib绑定到urllib2在一块儿,就可以在请求网页的时候附带cookie。 ajax

具体作法,首先第一步,用firefox的httpfox插件,在浏览器衷开始浏览新浪微博首页,而后登录,从httpfox的记录中,查看每一步发送了那些数据请求了那个URL;以后再python里面,模拟这个过程,用urllib2.urlopen发送用户名密码到登录页面,获取登录后的cookie,以后访问其余页面,获取微博数据。 json

具体代码,来自豆瓣的一篇文章:地址 浏览器

本人加了点注释,欢迎你们一块儿品尝该同窗的完美代码: 服务器

#coding=utf8

import urllib

import urllib2

import cookielib

import base64

import re

import json

import hashlib

#获取一个保存cookie的对象

cj = cookielib.LWPCookieJar()

#将一个保存cookie对象,和一个HTTP的cookie的处理器绑定

cookie_support = urllib2.HTTPCookieProcessor(cj)

#建立一个opener,将保存了cookie的http处理器,还有设置一个handler用于处理http的URL的打开

opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)

#将包含了cookie、http处理器、http的handler的资源和urllib2对象板顶在一块儿

urllib2.install_opener(opener)

postdata = {

'entry': 'weibo',

'gateway': '1',

'from': '',

'savestate': '7',

'userticket': '1',

'ssosimplelogin': '1',

'vsnf': '1',

'vsnval': '',

'su': '',

'service': 'miniblog',

'servertime': '',

'nonce': '',

'pwencode': 'wsse',

'sp': '',

'encoding': 'UTF-8',

'url': 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack', 'returntype': 'META'

}

def get_servertime():

url = 'http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=dW5kZWZpbmVk&client=ssologin.js(v1.3.18)&_=1329806375939' data = urllib2.urlopen(url).read()

p = re.compile('\((.*)\)') try:

json_data = p.search(data).group(1)

data = json.loads(json_data)

servertime = str(data['servertime'])

nonce = data['nonce'] return servertime, nonce

except:

print 'Get severtime error!' return None

def get_pwd(pwd, servertime, nonce):

pwd1 = hashlib.sha1(pwd).hexdigest()

pwd2 = hashlib.sha1(pwd1).hexdigest()

pwd3_ = pwd2 + servertime + nonce

pwd3 = hashlib.sha1(pwd3_).hexdigest() return pwd3

def get_user(username):

username_ = urllib.quote(username)

username = base64.encodestring(username_)[:-1] return username

def main():

username = 'www.crazyant.net'#微博帐号

pwd = 'xxxx'#微博密码

url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)' try:

servertime, nonce = get_servertime()

except: return global postdata

postdata['servertime'] = servertime

postdata['nonce'] = nonce

postdata['su'] = get_user(username)

postdata['sp'] = get_pwd(pwd, servertime, nonce)

postdata = urllib.urlencode(postdata)

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20100101 Firefox/8.0'}

#其实到了这里,已经可以使用urllib2请求新浪任何的内容了,这里已经登录成功了

req = urllib2.Request(

url = url,

data = postdata,

headers = headers

)

result = urllib2.urlopen(req)

text = result.read()

#print text

p = re.compile('location\.replace\(\'(.*?)\'\)') try:

login_url = p.search(text).group(1)

print login_url

#print login_url

urllib2.urlopen(login_url)

print "login success"

except:

print 'Login error!'

#测试读取数据,下面的URL,能够换成任意的地址,都能把内容读取下来

req = urllib2.Request(url='http://e.weibo.com/aj/mblog/mbloglist?page=1&count=15&max_id=3463810566724276&pre_page=1&end_id=3458270641877724&pagebar=1&_k=134138430655960&uid=2383944094&_t=0&__rnd=1341384513840',) result = urllib2.urlopen(req)

text = result.read()

print len(result.read())

#unicode(eval(b),"utf-8")

print eval("u'''"+text+"'''")

main()

其实获取了模拟登录后的urllib2,能够作抓数据等任何事情,你甚至能够写一个多线程的爬虫来爬遍新浪微博,我一直有这个想法,可历来没有实现。若是您有什么进展,请联系我共同进步。 cookie

pythonurllib登录微博账号_Python使用cookielib和urllib2模拟登录新浪微博并抓取数据...相关推荐

  1. pythonurllib微博登录怎么删_Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据...

    我们都知道HTTP是无连接的状态协议,但是客户端和服务器端需要保持一些相互信息,比如cookie,有了cookie,服务器才能知道刚才是这个用户登录了网站,才会给予客户端访问一些页面的权限. 用浏览器 ...

  2. 分享:Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据

    Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据 http://my.oschina.net/leopardsaga/blog/94774

  3. 微博登录记录pythonurllib_Python使用cookielib和urllib2模拟登陆新浪微博并抓取数据...

    我们都知道HTTP是无连接的状态协议,但是客户端和服务器端需要保持一些相互信息,比如cookie,有了cookie,服务器才能知道刚才是这个用户登录了网站,才会给予客户端访问一些页面的权限. 用浏览器 ...

  4. python的urllib2实现登录网页_python模拟网站登录(urllib、urllib2模拟登录)

    使用python模拟登录网站,首先要知道网站登录细节及相应的cookie. 分三步完成: 1,获取一个cookie 2,装载好自己的request 3,发送模拟登录请求 推荐阅读: Python模拟新 ...

  5. pythonurllib新浪微博_python模拟登录新浪微博抓取数据(cookielib和urllib2).doc

    HYPERLINK "/article/python/22972.html" /article/python/22972.html python模拟登录新浪微博抓取数据(cooki ...

  6. python登录新浪微博抓取微博内容_python机器登陆新浪微博抓取数据

    使用python机器登陆新浪微博抓取数据 1.[代码][Python]代码 # import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置 import re , ur ...

  7. python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据

    python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据 1.前言 上一篇是一个 python3爬虫系列22之selenium模拟登录需要验证码的微博且抓取数据, 我们是首 ...

  8. wget抓取数据,需要用户登录验证

    Niushop3.0电商系统,性价比之王!开牛店的第一选择! 在用wget抓取数据的时候,有的时候需要用户登录才能进行.这种情况下就需要时用cookie. 先看下面的代码:   wget --load ...

  9. python 定时自动爬取_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

最新文章

  1. 空调自控系统基础知识及应用
  2. HDU - 4333 Revolving Digits(扩展KMP)
  3. java快速排序算法_JAVA版排序算法之快速排序示例
  4. python中和为k的个数_程序查找在python中总计为k的不同组合的数量
  5. matlab guide 打开图像并将图像显示到界面
  6. MVP 在项目中的最佳实战(封装篇)
  7. python的dict()字典数据类型的方法详解以及案例使用
  8. 用户列表 html,用户列表.html
  9. html vba 单元格 格式,VBA设置单元格格式之——边框
  10. SubSonic学习(二)
  11. Navicat 11 Premium中文破解版使用心得
  12. NLP算法工程师,基本技术能力要求有哪些?
  13. 完全卸载 OneDrive / 重装 OneDrive / 解决“已经安装了 OneDrive”
  14. Internet时间自动同步后,计算机系统时间比北京时间不能同步一致
  15. 《深入理解C指针》——认识指针
  16. java命令行简单实现推箱子小游戏
  17. Chrome播放视频时只有声音没有画面
  18. win7环境下安装ubuntu双系统
  19. ACP敏捷管理认证的含金量高吗?
  20. 跟着老陈学嵌入式-C语言入门之类Linux编译环境搭建

热门文章

  1. 华为云ubuntu更新阿里源
  2. 卖公仔创业从地摊卖出国
  3. 米联客udp_stack以太网协议栈使用教程
  4. 213123123123123
  5. 目标检测——交并比(Intersection of Union,IoU)计算
  6. 网心科技CEO李浩:边缘计算的当下以及未来
  7. 《机器学习》Chapter 1 绪论——机器学习中的基本概念和术语
  8. 手机中的wifi上网是做什么用的?
  9. 18种根据屏幕字段查找潜在数据的技巧
  10. 百分之 95% 的程序员不知道 Trending 是什么。