最近在给BlogsToWordpress添加博客大巴Blogbus的支持。
折腾过程中,越加发现,博客大巴里面的设计,有些特殊,或者叫变态。
因为其博客帖子的html源码里面,内容格式很是混杂。
比如,对于文章标题来说,有这种h2中的文字是标题的:
#http://littlebasin.blogbus.com/logs/1379808.html # <div class="postHeader"> # <h3>2005-08-22</h3> # <h2>第一篇<span class='category'> - [<a href='/c1396918/'>随笔</a>]</span></h2> # </div>
也有这种,除了标题,还带发布日期的:
#http://gogodoll.blogbus.com/logs/210877066.html : # <div class="postHeader"> # <div class="innerBox"> # <h2>浮生三日 青岛 DAY3 - May 6, 2012</h2> # ...... # </div> # ...... # </div>
另外还有h2中a标签内包含标题的:
#http://janexyy.blogbus.com/logs/105359907.html # <div class="postHeader"> # <h2> # <a href="http://janexyy.blogbus.com/logs/105359907.html" title="转载时请复制此超链接标明文章原始出处和作者信息">我们,细水长流</a> # </h2> # </div>
然后还有h3中包含标题的:
#http://kenleung.blogbus.com/logs/219268309.html : # <div class="postHeader"><br> # <h3>鐵盒里的影劇院</h3> # <h2></h2> # </div>
如此种种。
除了标题,其他的文章的,发布时间,发布日期,分类,标签等,也都是很乱的。
无法让你通过一个普通的规则,就可以提取到所有博客的文章的信息。
尤其是很多博客的排版不同,内在html架构逻辑也不同,所以使得想要支持所有博客的话,程序很难写,很麻烦。
这样的结果,导致你去写程序,提取文章的各种信息的话,工作量很大,而且还很麻烦。
对于结构上如此乱的html源码,不知道是本身设计就是如此,还是故意为了防止别人写爬虫程序分析网页,所以弄得很很乱,让你很难分析。
不管是何原因,总之,博客大巴的html源码的内在架构,还是很变态的。
后来,前前后后,单独只是为了解析文章的标题,结果就遇到10多个不同的类型,需要单独判断去处理,才能正确解析一个文章的标题,真的是彻底服了博客大巴了。
另外,对于文章发布时间,其又拆分为日期和时间,单独解析日期,也有6,7种类型,单独解析时间,也还有6,7种类型,另外就不多说分类,标签等内容的解析了。
总之是,好像是不同的模板,会产生不同内在逻辑结构的html源码,导致源码格式,没有一个统一的架构,甚至里面都没有对应的class等属性,使得你去解析html的时候,Beautifulsoup只能帮上部分的忙,另外还要通过正则表达式re模块去解析,所以,为了支持博客大巴,所做的工作量,都赶上好几倍于支持其他博客的工作量了。
而且,html源码格式乱就算了,结果甚至还遇到不合法的代码,比如:
http://ronghuihou.blogbus.com/logs/89099700.html
中竟然包含:
<SCRIPT language=JavaScript> document.oncontextmenu=new Function("event.returnValue=false;"); //禁止右键功能,单击右键将无任何反应 document.onselectstart=new Function( "event.returnValue=false;"); //禁止先择,也就是无法复制 </SCRIPT language=JavaScript>
即,script的属性language的值JavaScript,竟然没有加上双引号,导致Beautifulsoup去解析出错,调试了N长时间,才找到原来是这个错误。真的很让人崩溃。
而其他还有些变态的事情,比如把css配置源码,全部都写入到html源码的head中的,当然这不是不可以,只是一般没有这么二的做法。。。。
到此为止,已经为了支持各种博客的内容的标题,分类,发布日期,发布时间,标签,内容等,折腾的焦头烂额,因为随便换个博客,由于模板不同,html内在逻辑架构就不同,虽然上述已经支持了常见的10多种格式了,但是才发现,估计这个东西是个无底洞,即使写的代码,足够智能化,去判断未来可能出现的类型了,但是还是很难支持全部的博客。
qq空间代码的变态,之前就说过了:
【记录】给Python脚本BlogsToWordPress中实现QQ空间搬家到wordpress的功能 + 感慨:QQ空间真的很变态
结果现在发现,博客大巴的html源码,比qq空间变态多了,所以是目前分析过的各种博客中最变态的了。
对于这种无底洞式的分析,决定停止,等有人遇到不支持的,再慢慢添加对应的支持了。
转载请注明:在路上 » 【记录】为BlogsToWordPress添加Blogbus支持