我的文件中有一个单词列表(1K+),我想获取它们的定义并保存它们。我正在考虑从 Google 获取他们的定义,as it's the first thing that it shows 。我考虑的方法非常基本,即创建一个指向给定单词的 Goole 搜索的 URL 实例,并使用流读取内容。然后,“过滤”定义,该定义始终位于 "data-dobid="dfn"><.span>" 和 "<./span>"< 之间/p>
例如:
[...]data-dobid="dfn"><.span>. unwilling or refusing to change one's views or to agree about something<./span>.[...]
顽固的定义是什么
但是我想知道是否有更“有效”的方法,例如不检索搜索的所有其他结果。而且,如果可以在后台线程中加载多个结果,这样当我想要“解码”定义并保存它时,我就不必总是等待搜索完成。
最佳答案
更有效的方法是下载字典,然后可以在本地加载。这为您提供了一个易于搜索的本地文件或数据库。
这种方法不仅计算效率高,而且还可以确保您在其许可下正确使用信息。您提出的建议通常称为“抓取”,可能违反各种许可和服务条款。
This blog post列出了几个免费提供且免费许可的词典。
This AskUbuntu.SE question描述了获取免费词典并从命令行引用它所需的更多技术工作。您可能希望复制这些读取模式以在 Java 中加载数据。
另一种方法是使用免费提供且获得适当许可的 API,例如 https://dictionaryapi.com/ 。这仍然会使用 HTTP 调用,但已获得明确许可,并且也是用于查找人类语言单词定义的显式 API。与抓取 Google 相比,这是一个优势,因为您无需解析 HTML,并且您已获得使用它的适当许可。
最后,StackOverflow 和 StackExchange 上还有一些类似(如果不是重复的话)的问题,例如:How to implement an English dictionary in Java?
关于java - 从 google java 检索单词定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60955804/