【发布时间】:2015-05-06 17:24:56
【问题描述】:
我正在构建一个抓取网站的程序。它会查看整个网站并仅获取该网站的页眉和页脚导航菜单,然后在页眉和页脚菜单之间插入新的 html 标记(div、p、table 等)。
我正在寻找一些关于如何只去除页眉和页脚导航菜单以及在两者之间添加代码的想法。
我正在使用HTML Agility Pack 并研究了一些方法。
方法一:
在大多数情况下,页眉和页脚导航菜单大多是 链接,并且文本很少。我使用了一个阈值变量 是文本与链接的比率。如果一个节点的比率 text:links 是 小于阈值,该节点将被视为菜单节点,并且 它会被保存。任何文本:链接比率大于的节点 阈值将被删除。
方法 1 适用于某些网站,但不适用于其他网站,因此我放弃了它。
方法二:
我在每个节点中搜索了包含“nav”的 id 或类属性 或“菜单”。 "n","a","v", "m","e","n","u" 可能是大写或 小写,并且“nav”和“menu”可以被任何包围 字符的组合。这样,它将包括 id 和 类如“bottomNav”、“navRight1”、“LeftMenu2”等。如果 id 或包含“导航”或“菜单”的类,节点将被保存。 如果节点的属性不包含这些术语中的任何一个,或者任何 节点的后代不包含这些术语中的任何一个, 节点将被删除。
同样,方法 2 适用于某些网站,但不适用于其他网站。
对于使用这两种方法的网站,我仍然无法在两个菜单之间放置新的 html 代码,因为我无法确定页眉菜单的结束位置和页脚菜单的开始位置。
我只是在寻找其他想法,了解如何仅从网站上抓取页眉和页脚导航菜单,并在两者之间插入新的 html 代码。
【问题讨论】:
标签: web-scraping html-agility-pack nav scrape navigationbar