2013-03-26 89 views
4

我熟悉在php中使用XPATH来解析DOM以获得我想要的页面。我想听到的是关于如何以编程方式忽略页面上的页眉,页脚和侧边栏以及仅提取主体内容的一些建议。只刮掉网页的主要内容(忽略页眉,页脚和侧边栏)

给出的情况是没有特定的目标,所以我不能简单地忽略#header和#footer这样的特定id,因为每个页面的写法都有些不同。

我知道谷歌这样做,我知道这一定是可能的,我只是不知道从哪里开始。

谢谢!

+0

http://stackoverflow.com/questions/10996357/scrap-data-through-xpath-from-div-that-c​​ontains-javascript-in-scrapy-python – IceDevil 2013-03-26 18:02:45

+0

感谢冰魔,但我不明白这与我的问题有何关系? – deweydb 2013-03-27 13:44:01

回答

1

有没有小的或快速的方式来刮去网页上的内容。我做了很多这些。对此没有简单的规则。早些时候在基于html3 /表格的设计日,有不同的方式来识别和网站设计本身是有限的。屏幕尺寸受到限制,因此菜单位于顶部,右侧或左侧面板没有空间。然后来到带有桌面设计的面板的时代。现在是浮动内容的时间。然后我们甚至使用溢出:隐藏所以它更难以通过字数统计身体等。

当写入html文件时,代码永远不会被标记为内容或菜单。有时你可以从类名中派生出来,但这不是通用的。内容从CSS获取其大小和位置。所以你的解析器本身不能确定页面的正文部分。如果您使用嵌入式HTML查看器并使用DHTML/JS在渲染后定位块的大小,则可能有一些方法可以实现,但仍然不会通用。我的建议是使你的解析器,并逐案改进。

对于谷歌来说,它已经制作了大部分html设计组合的程序。但即使是谷歌,做一个通用的解析器,我认为是不可能的。

2

有没有确定的方法来确定它,但你可以用启发式方法得到合理的结果。建议:

从同一网站上刮掉两个或多个页面,并从顶层开始逐块比较它们,进行几个级别的深度处理,直到块数足够大为止。比较不会是==,而是一个相似性指数,例如similar_text。 超过一定比例的相似性的块很可能是页眉,页脚或菜单。你将不得不通过实验找出哪个阈值是有用的

相关问题