如何在HTML中处理讨厌的不平行标记?

时间:2012-01-04 11:27:01

标签: python html

我有几千个HTML源要阅读。它是从2004年开始的论坛。我的基本想法是通过改变Python脚本中的页码来阅读页面。我需要的一切都是这样的

 lot of other tag from beginning
 <div id="posts">
  lot of stuff between
 </div>
 lot of other tag till ending

我认为,使用beautifulsoup findAll命令读取之间的内容,并且在99%的时间内完美地运行。突然,一页让我感到沮丧。结构如下所示

 lot of other tag from beginning
 <div id="posts">
  first part
  </div>
  second part
 </div>
 lot of other tag till ending

正如你所看到的,这是一个前所未有的无与伦比的。然后,beautifulsoup认为第二个最后是当时的结局它忽略了无用和真实结局之间有用的第二部分

我相信这是一个罕见的情况,因为我完成了另一个包含1960页的线程,没有这样的问题。此问题发生在旧线程中。谁有任何想法?有没有固定工具?非常沮丧。

提前致谢

1 个答案:

答案 0 :(得分:2)

亲爱的,亲爱的。 最简单的方法是修复页面,使所有结束标记都有一个开始标记....

基本上标记不正确,浏览器有各种各样的ifs和buts来应对这个以及其他有趣的事情,如

<Tag1><Tag2></Tag1></Tag2>

应对html无效xml的糟糕旧时代。 虽然做了很多工作,但它在代码中是可行的,但基本上你必须“猜测”缺少的开始标记应该在哪里。

在这种特定的情况下,你会在逻辑上插入一个开始div,或者你能否撕掉孤立的结束标记。你必须猜测这个意图......痛苦,非常痛苦。

非常有可能弄乱你的逻辑。我在这个页面上抛出一个错误并转到下一个,然后修复它。