【发布时间】:2010-11-19 14:10:23
【问题描述】:
我尝试构建一个程序来为公司管理团队抓取网络。它在获取许多东西方面非常准确,包括:
-名字
-职称
-图片
-电子邮件
-资格(MD、PhD等)和后缀(II、III、JR。)
我遇到的问题是抓取此人的描述。例如,在 Facebook 的 Executive Bios 页面上,我想要 Mark Zuckerberg 的描述。然而,由于 HTML 结构的所有差异,很难以接近 100% 的准确率来抓取它。
我正在使用 Perl 和许多我认为是高级的正则表达式。有没有更好的方法/工具来解决这个问题?
我最近的尝试是在页面上查找人员全名的最后一次出现,然后获取所有文本,直到我找到同事的名字。虽然这似乎可行,但它给我的结果并不理想。
编辑:我意识到这个问题只是试图解析这个特定页面,我需要一些足够通用的东西来处理任何公司的“人员页面”。我知道 100% 的准确率是无法实现的,正在寻找可以让我达到 50% 以上的东西,因为目前我的准确率下降了大约 15-20%。
【问题讨论】:
-
实际上,使用任何 HTML 解析器来抓取该页面都是微不足道的。所有信息都包含在具有不同类名的元素中。当然,使用正则表达式解析 HTML 通常是一个容易出错且令人沮丧的任务。因此,请使用 HTML 解析器。
-
是的,这个页面是微不足道的,我需要一些足够通用的东西来在任何页面上工作(或至少 50-60%)。我刚刚抓取了 facebook 页面来展示我想要的内容示例。
-
你永远找不到一个“足够通用,可以在任何页面上工作”的正则表达式。
-
@Ether 那么是否有任何其他方法可以通用到足以处理 50-60% 的页面?
标签: regex perl web-scraping