今天开新浪微博,才发现收藏已然有2000+了,足足104页,貌似需要整理下了,可是一页页整理,难以想象

所以想下载,然后进行提取处理,转为文档

我们关注的:

1.微博正文+评论内容

2.图片

3.视频链接

用python实现

思路:

1.脚本模拟登陆新浪微博,保存cookie

2.有了cookie信息后,访问收藏页面url

3.从第一页开始,逐步访问,直到最后,脚本中进行了两步处理

A.直接下载网页(下载到本地,当然,要看的时候需要联网,因为js,图片神马的,都还在)

B.解析出微博需要的内容,目前只是存下来,还没有处理

后续会用lxml通过xpath读取,转换成文档,当然,图片和视频链接也会一同处理,目前未想好处理成什么格式。(困了,明后天接着写)

模拟登陆微博采用是http://www.douban.com/note/201767245/

里面很详细,直接拉来用了

步骤:

1.进入自己的微博,右侧,收藏,进入收藏页面

http://weibo.com/fav?leftnav=1&wvr=3.6&page=1

拿前缀

2.修改脚本填写\

用户名

密码

前缀http://weibo.com/fav?leftnav=1&wvr=3.6&page=

3.运行脚本

python weibo_collect.py

结果:

其中,带序号的,只能连网时点击打开有效

tmpcontent是包含所有微博内容信息,但目前还没有处理(还没想好提取成什么格式,容后再说)

附上脚本

#!/usr/bin/env python
#coding=utf8
import urllib
import urllib2
import cookielib
import base64
import re
import json
import hashlib
import os#login code from:  http://www.douban.com/note/201767245/
#加了下注释# cookie -> opener -> urllib2.
# 然后,urllib2的操作相关cookie会存在
# 所以登陆成功之后,urllib2的操作会带有cookie信息,抓网页不会跳转到登陆页
cookiejar = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cookiejar)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
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, nonceexcept:print 'Get severtime error!'return Nonedef get_pwd(pwd, servertime, nonce):pwd1 = hashlib.sha1(pwd).hexdigest()pwd2 = hashlib.sha1(pwd1).hexdigest()pwd3_ = pwd2 + servertime + noncepwd3 = hashlib.sha1(pwd3_).hexdigest()return pwd3def get_user(username):username_ = urllib.quote(username)username = base64.encodestring(username_)[:-1]return usernamedef login(username, pwd):url = 'http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.18)'try:servertime, nonce = get_servertime()except:returnglobal postdatapostdata['servertime'] = servertimepostdata['nonce'] = noncepostdata['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'}req = urllib2.Request(url=url,data=postdata,headers=headers)result = urllib2.urlopen(req)text = result.read()#p = re.compile('location\.replace\(\'(.*?)\'\)')
    p = re.compile(r'location.replace\("(.*)"\)')try:login_url = p.search(text).group(1)#print login_urlurllib2.urlopen(login_url)print "登录成功!"except:print 'Login error!'#收藏页网页源代码存在current,表示当前页,判断最后页
p4currentpageid = re.compile(r'page=(\d*)\\" \\n\\t\\t class=\\"current\\"')#新增
def download(url, save_dir, frompid=1):if not os.path.exists(save_dir):os.mkdir(save_dir)#os.mkdir(save_dir + os.sep + "tmp")i = frompidlastpage = ""content = open(save_dir + os.sep + "tmp" + "content.txt", "w")while  True:source_url = url + str(i)print "Downloading.....", source_urldata = urllib2.urlopen(source_url).read()#print data#拿到当前页current_pageid = p4currentpageid.findall(data)print "Current page id: ", current_pageidif current_pageid:page_id = current_pageid[0]#若是超出了,代表已经下载到最后一页了if page_id == lastpage:breaklastpage = page_id#保存每一页微博主体部分,转汉字,utf-8,存文件,目前是html格式,尚未进行二次处理lines = data.splitlines()for line in lines:if line.startswith('<script>STK && STK.pageletM && STK.pageletM.view({"pid":"pl_content_myFavoritesListNarrowPlus"'):print "true"n = line.find('html":"')if n > 0:j = line[n + 7: -12].encode("utf-8").decode('unicode_escape').encode("utf-8").replace("\\", "")content.write(j)if data:f = open(save_dir + os.sep + str(i) + ".html", "w")f.write(data)f.close()i += 1content.close()def trans_to_html(f_content):f = open(f_content)detail = f.read()print len(detail)#使用lxml进行处理,xpath读取对应的内容,清理转为目标格式f.close()username = 'your account'
pwd = 'your password'
login(username, pwd)
begin_url = "http://weibo.com/fav?leftnav=1&wvr=3.6&page="
save_dir = "./weibo_collect"
download(begin_url, save_dir)
f_content = save_dir + os.sep + "tmp" + "content.txt"trans_to_html(f_content)

Ok,至于怎么转,后续再搞

to be continue.....

睡了,晚安

wklken

http://wklken.sinaapp.com/

2012-08-19

登陆新浪微博批量下载收藏内容[Python脚本实现]相关推荐

  1. 登陆新浪微博批量下载收藏内容

    1.脚本模拟登陆新浪微博,保存cookie 2.有了cookie信息后,访问收藏页面url 3.从第一页开始,逐步访问,直到最后,脚本中进行了两步处理 A.直接下载网页(下载到本地,当然,要看的时候需 ...

  2. python 批量替换srt文本_VTT批量转SRT(Python脚本)

    在asciiwwdc下在的字幕都是vtt格式的,我本地播放的时候播放器支持srt格式字幕.网上有一些自动转的工具,但是一个个文件拖太麻烦了.早上就顺手写了一个脚本 . srt和vtt文件有以下几点不同 ...

  3. ChatGPT文章生成器,批量生成网站文章脚本汇总说明!

    淘小白写的chatgpt批量生成文章的脚本,已经被很多朋友使用了,也陆续给大家做了介绍,今天这篇文章是之前文章的一个汇总,希望能够大家更好的了解这款脚本. 1.<chatgpt批量生成文章pyt ...

  4. 云服务器定时执行python脚本

    文章目录 前言 crontab简介 基本语法 定时任务具体内容 python 脚本定时任务 前言 在服务器上定时执行任务有两种方式,一种是at定时任务,一种是crond任务调度,at命令是一次性定时计 ...

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

    1.[代码][Python]代码 # import 这边需要注意的是只有一个rsa这个模块是需要install的,其他的都是内置 import re , urllib.parse , urllib.r ...

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

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

  7. python替换excel指定内容_Python脚本操作Excel实现批量替换功能

    大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换. 使用的工具 Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet, ...

  8. python脚本批量生成数据

    在平时的工作中,经常会遇到造数据,特别是性能测试的时候更是需要大量的数据.如果一条条的插入数据库或者一条条的创建数据,效率未免有点低.如何快速的造大量的测试数据呢?在不熟悉存储过程的情况下,今天给大家 ...

  9. 用python批量下载modis数据的速度怎么样_MODIS数据的简介和下载(五)——应用密钥的Python脚本下载...

    接上文,由于NASA官方弃用了FTP改用HTTPS服务,所以关于MODIS数据的下载方式有所改变.完整系列博客可以参照以下链接.本篇主要接着上一篇没有讲完的应用密钥的脚本下载介绍. 1 官方教程与说明 ...

最新文章

  1. Shell字符串截取——获取oracle group名字
  2. MySQL和Python交互
  3. IBM磁带库中更换磁带的步骤
  4. Spring Boot如何优雅的校验参数
  5. mysql定期执行备份语句_【mysql】备份篇1:使用系统计划任务+mysqldump 定时备份mysql数据库 不用输入密码自动导出sql文件...
  6. 你想带一顶什么样的硕士帽(转载)
  7. php 实现两变量值对换,php两个变量的值交换的方法
  8. dataframe 选择输出_使用 Python 实现机器学习特征选择的 4 种方法
  9. SpringSource通过Spring for Android 1.0将Spring Framework引入到Android上
  10. 狗是不是最和其它动物合得来的一种动物?
  11. 蓝桥杯 ALGO-10 算法训练 集合运算
  12. 1063. 计算谱半径(20)-PAT乙级真题
  13. MongoDB可视化工具Robomongo 和 Mongochef
  14. (014) 类函数和对象函数
  15. 大数据同步利器: 表格存储全增量一体消费通道 1
  16. VSCode中针对C语言的代码格式化配置
  17. Mad Scientist[USACO]
  18. 扩散模型类似的方式训练text_to_text可不可以
  19. cocos2dx 更改帧频
  20. Python 一维波动方程差分法求解及可视化

热门文章

  1. 天龙八部链接不上mysql_天龙八部私服教程完美服务端关于TWGM登陆问题解决
  2. 天宇优配|酒企没借壳!标准股份股价上演A杀,两跌停
  3. OpenCV实践:低对比度图像检测圆形轮廓
  4. mysql hash join_MySQL的Hash Join能用吗?
  5. 亚马逊小白如何寻找关键词?
  6. 手把手教你输出1000到2000之间的闰年
  7. Python 使用selenium爬取房天下网站,房源动态信息
  8. ubuntu-10.04下 联想 卲阳E46L以太 网驱动程序安 装
  9. linux存储技术学习资料
  10. 数字孪生智慧水务建设综述