python库确实强大……

由于某些论坛总是像秋天的蚂蚱,蹦达不了几天了,所以我一口气把它的一个版块的帖子全部抓了下来。本来只要再搞一个它的css文件下来就可以凑合着当归档了,不过我还是不满足于此:一大堆的<div></div>之类的html代码不是我所需要的。刚好在《dive into python》中看到过SGMLParser的用法,于是便发挥自己先前完全不会、用时边学边用、用完完全忘光的优良品质,写了一个提取帖子内容的python程序。

先说一件事,《dive into python》其实写得挺不错的,很注重描述python的特性,不过我觉得作者讲解的思路就是你要用python写出一个具有高度的适应能力、在各种各样的不同的险恶环境下都能够使用得全能型程序,有点类似于开发一个基于python的framework的工作,其中的“内省”啊“动态调用方法”啊什么的实在是让我触目惊心;我也曾看到过批评它讲得太复杂、以至于吓跑很多初学者的缺点。

对于我这种业余爱好者,它只要能帮上忙就行,例如写出一个乱七八糟但无论如何都还能用的ac娘工具就很不错了。为了参考这本书的内容,我想办法将那个原本极其通用的程序写得一点儿也不通用;对于每一个下载下来的页面,其实只要找到它括住帖子内容的html tag,然后将内容parse下来就行了。

借助于这个库的强大功能,我很轻易就能把那些<span style=”display:none”>乱码</span>的代码去掉了;而普通的浏览器拷贝是无法避免掉这些乱码的。再用glob读取当前文件夹的文件列表,批量处理,几分钟后就把几千个帖子全部转成干净的文本文件了。

python中列表和字典这两个集合类型的强大,是它好用的一个重要原因。以前用vbs写excel的宏,要进行某些棘手的操作的时候,上网查资料,会告诉你有一种叫XXX类型的对象可以处理这个情况,不过这些处理完之后返回的是另外一种YYY对象,要调用ZZZ方法才能将它print出来=.=。java更好,上网搜就说:你可以用一个XXXfactory……然后没有任何经营工厂经验的我就只好放弃了。python很多时候都是返回一个list或者dict,而且它们都是可以直接print出来而不用写for…in循环,很方便。

此外就是它有无比强大的库。我希望更多去了解一下http,例如cookie的原理什么的,然后能够自如地做各种抓取器。