-
利用Python解析新浪博客javascript生成的评论
【前言】sina2wordpress终于有一个大概模样了,目前版本号为0.1 这是本站项目地址,这是代码托管地址 言归正传,目前新浪博客的评论是用JavaScript生成的,直接用urllib2读取的信息中没有评论信息 通过Firefox下的firebug或者Chrome自带的Develop Tools,都可以找到js脚本在运行时GET的数据,具体方法是:打开之后选择“Network”标签,并选择“XHR”分类项,刷新页面并等待加载完成,稍等一会就会看到GET了一条以“comment”开头的html页面。 主要规律是,例如韩寒同学的这篇日志地址是 “http://blog.sina.com.cn/s/blog_4701280b0101854o.html”,那么打开日志页面时GET的就会是 “comment_4701280b0101854o_1.html”,规律不难发现,后面的那个数字就是评论的页数,最后的那个页数可以变为任意整数(没有尝试过上限),当超过实际评论页数时,显示的会是同样的编码,这也就是循环结束条件 此地址为相对路径,打开后是一堆乱码,这就是JavaScript的数据存储形式——json编码。可以简单的类比成Python中的字典,本例中共有两个关键字,一个是“Code”,对应值”A00006″,没发现啥用处,第二个关键字是“data”,其余部分均为data的对应值,利用Python的json模块进行解析可以发现,这就是评论的html代码。不过这里需要注意的是,第二个关键字“data”缺少双引号,直接解析会报错,需要先进行字符串处理,然后再解析。 相关代码如下(完整代码可以参见前言中的代码托管地址): [python] #根据json解析之后的html代码总结出来的各个关键信息的正则表达式 comment_author_pattern=re.compile(r’(.*?)‘) comment_url_pattern=re.compile(r’(.*?)‘) comment_time_pattern=re.compile(r’(.*?)‘) comment_content_pattern=re.compile(r’ (.*?) ‘, re.S) #这里的re.S很重要 def commentsAnalyze(key): #key为地址中间的标识性字符串 num=1 #表示评论的页数 url=r’http://blog.sina.com.cn/s/comment_%s_%d.html’ %(key, num) #生成json编码对应的地址 page=urllib2.urlopen(url).read().replace(‘data:’,’”data”:’,1) #给data添加双引号 while not ‘noCommdate’ in page: #noCommdata是无评论json编码页面的关键字 data=json.loads(page)[‘data’] #最关键的一部,json代码的解析并有效部分 #通过正则匹配出相关信息,其中url是可能存在的,将稍后处理 author=comment_author_pattern.findall(data) url=[] time=comment_time_pattern.findall(data) content=comment_content_pattern.findall(data) #后处理url,判断前面提取出来的author周边是不是带有标签(超链接)即可 for i in range(len(author)): comment_id+=1 result=comment_url_pattern.search(author[i]) if result: url.append(result.group(1)) author[i]=result.group(2)…
-
浑浑噩噩ing
[废话当前]RSS订阅的问题似乎终于解决了,看到这篇post的朋友还望告之确认一下,谢谢啦~~ 最近浑浑噩噩的,一直没闲着,回头想想却似乎只是在给自己的颓废找借口……小结一下 1、Golosim算法可视化开发,混了个二作的冯如杯项目,比较理论的一个东东,无线网络,随机路点模型、Ad Hoc,貌似很高深,但这次做的只是做了一个UI,加了自己用OpenGL开发的可视化模型,又用数据库实现了数据对比功能。 2、基于Google Earth的北航3D建模,没有混到作者名单的一个冯如杯项目(囧),和大一几个小朋友一起用sketchup建模,我做的是图书馆,效果还算不错。这个项目不是仅仅为冯如杯准备的,希望能很好的延续下去。 3、Google Camp,不得不承认在社长这个位置上我越来越觉得自己做的有问题了,胡乱的忙了好多,却没有很好的调动大家的积极性,虽然说课业太重是很大一部分原因,但是这不能否认我身上的问题,努力ing! 说一些或远或近的计划吧 1、Google Camp春季策划活动,进行中,暂不评论。 2、Android 开发,过段时间有一个Android开发大赛,钻研一下SDK和JAVA。 3、Python,只是寒假学了一会,开学之后忙着忙着就荒废了,重新拾起来,争取做一些东西。 4、Podcast,逆铭的项目,报了这学期所有要交大作业的课程,所以义不容辞参与进来,正好学一些协作开发经验。 5、和计院的一个实验室导师联系上了,主要研究方向是计算机图形学,OpenGL、DirectX……有的玩了~~ 6、数据库、C#都是这学期比较重要的课程,虽然课堂本身显得很水,但还是有认真学习的必要的 7、数学二学位,荒废了好久了……数学和英语……是该努力了~~~
-
邂逅Ubuntu(1.0版)
1.0版-20090827前言 很早就返校,闲暇之际,以虐本为乐,刷Bios,装Win7,重装系统数次,甚感每配置ubuntu顺序杂乱,故结合个人需求和实际,列出此文,意在主要步骤,不过分赘于细节。如有不明之处,尽可与我联系,我会尽量帮助解决。 本文分为八个部分 系统安装篇 原始设置篇 初步设置篇 优化配置篇 美化设置篇 应用配置篇 完善配置篇 杂七杂八篇 P.S.本文基于Ubuntu 9.04版本,原始内核版本2.6.28-11 P.S.P.S.一些个性设置与个人喜好有关,仅供参考 P.S.P.S.P.S.鉴于本人水平有限,加之本文为最初版本,如有错误,还望不吝赐教,本文也会适时发布更新版本 P.S.P.S.P.S.P.S.本文确属原创,当然很大程度上是对信息进行了一些整合,转载请征得本人同意,并附上原文链接等版权信息 系统安装篇 现在的安装都是比较傻瓜式的,按照步骤说明进行相关设置即可,这里只是简单的谈谈各种不同安装方式的优劣和注意点。 wubi安装 系统稳定性不好,因为ubuntu被认为是winodws下的一个程序,如果工作过程中一旦系统出现问题,那么很有可能的结果是文件被损坏,ubuntu直接就废掉了…… 虚拟机安装 这个比较适合初次尝鲜的人群使用,方便删除,也迎合的linux系统占用极小的特点,用virtualbox跑Vista等于自杀…… 硬盘安装 这个特别需要注意硬盘的分区,因为最好是分成三个区,一个挂载“/”,一个挂载“/home”,一个作为linux swap交换分区,至于大小首先要根据电脑的配置,然后根据个人对ubuntu的应用程度。 分区说明: 之所以将“/home”单独设置成一个分区是因为/home下保存了基本上所有的设置,这样的话,无论是重装系统还是升级,只要仍然将/home挂载到原来的分区上,基本上所有的设置就都不会改变,包括compiz的3D效果等等 原始设置篇 一、第三方软件源的设定 首先需要使电脑处于联网状态,在初始页面的上方面板中就有网络配置的图标,进行相关设置即可 联网后,在终端中输入以下命令,打开第三方软件源的配置文件 sudo gedit /etc/apt/sources.list 注:此类代码命令均在终端中输入执行,”应用程序”–>”附件”–>”终端(Terminal)” 强烈推荐 上海交通大学 的这组源,北航的教育网、大运村的网通以及我在江苏家中的电信都有很理想的速度 deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty-backports main multiverse restricted universe deb http://ftp.sjtu.edu.cn/ubuntu/ jaunty-proposed…