日期:2014-05-18  浏览次数:20944 次

正则表达式解析网页的问题
如何使用正则表达式解析结构不同的网页的内容,是同一个网站的内容,但是结构不同,单纯的解析网页我是可以做的,就是遇到这种情况如何处理,大家看两个网页
http://abbydonkrafts.wordpress.com/2008/01/08/argh/
http://clowninginthemidwest.wordpress.com/2008/01/26/and-you-never-know-what-they-will-do/
这两个网页都是wordpress.com的博客,但是他们的结构是不同的,比如第一个的评论是使用6 Responses to “ARGH!”,说明对这篇文章有六篇评论,而第二个是使用2 Comments说明有两个评论。
我现在因为需要找一些实验数据,就从这同一个网站找这些网页然后存储到数据库,目前只知道使用正则表达式来做,但是使用正则做匹配,对于结构单一的网站(比如http://www.metafilter.com)来说,这是没有问题的,但是对于这个wordpress,每一个blogger可能都使用了自己的风格,我如何能够把作者发表的文章,发表日期,评论,评论日期,评论人解析出来呢,因为可能会用到几万甚至几十万的数据,所以不大可能针对每一个网页采用不同方法的,大家有什么建议?谢谢!

------解决方案--------------------
假设6 Responses to “ARGH!”这一篇的版型风格叫做a
你就针对版型风格a做一个regular expression
2 Comments这一篇风格叫做b,你就针对b再一个regular expression
如果只有100个风格,做一百个regular expression,就可以处理你几万或几十万的数据的话,那你就自行评估这样子做时间上划不划算

按照我的理解,你要分析的网页,可能发表日期有三个位置、四种日期格式。评论人有两个位置,三种格式。换言之排列组合是非常多种的…你要做的正则表达式就非常多

我在使用正则表达式之前,会先用纸笔把我要分析的需求一行一行写下来,也许会有一百行,接下来我再思考这一百行里面有没有可以省略的?或是不足的,等考虑周全了,才到电脑上用正则表达式来一行一行解决我的需求

或许帮不了你很多,可是我用正则表达式也有不少经验,我的思路或许你可以参考