我怀疑是否存在一种无需任何培训就可以在任意搜索查询输出上工作的灵丹妙药算法。
然而,这个任务是可以解决的,实际上在许多应用程序中都可以解决,只是方法不同。首先,您必须根据您的实际操作(可能是名称、日期、链接、描述片段等)定义单个搜索结果项的一般结构,然后编写将提取必要的 html 解析器的数量来自特定网站的搜索结果输出的必要字段。
我知道这不是超级性感的解决方案,但它可能是唯一有效的解决方案。这不是火箭科学。写解析器其实非常简单,一天可以写十几个。如果您查看搜索结果的 html 源,您会注意到输出结果通常非常结构化,并标有特定的div部分或类属性,因此很容易在文档中找到它。你甚至没有使用任何复杂的 HTML 解析库,类似 grep 的东西就足够了。
例如,在此特定页面上,您的问题以 . 开头<div class="post-text">
和结尾</div>
。两者之间的所有内容实际上都是带有一些 HTML 格式的帖子文本,您可能希望将其连同多余的空格和“\n”一起删除。这<div class="post-text">
仅在页面上出现一次。
一旦你大规模地使用你的检索应用程序,你会发现在不同的站点上没有那么多不同的搜索引擎,你将能够使用类似的搜索引擎重用已经创建的解析器。
您唯一需要记住的是内置的自我测试。网站往往会不时升级和更改设计。如果您的应用程序要运行一段时间,您将需要在解析器中包含一些逻辑,这些逻辑将检查其结果的有效性,并在每次搜索输出发生更改并且不再与解析器兼容时通知您。然后您将不得不修改特定的解析器或编写新的解析器。
希望这可以帮助。