最新消息:20210917 已从crifan.com换到crifan.org

【记录】为BlogsToWordPress添加Blogbus支持

Python crifan 2262浏览 0评论

最近在给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支持

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

    102 queries in 0.187 seconds, using 23.42MB memory