完整的项目视频课程请识别下面的二维码进入个人B站:typescript
本项目是基于鸿蒙的电子词典,支持使用本地词库和远程词库。本地词库使用SQLite数据库、远程词典使用爬虫获取的单词数据。爬虫使用JSoup库(基于Java语言)。欲知详情,请继续观看本课程的视频。
数据库
本课程以实战为宗旨,step by step来完整在线电子词典项目。例如,下面是异步搜索网络词库的源代码。微信
class AsyncSearchWord extends Thread { private String word; private RdbStore store; private SearchWordCallback callback; public AsyncSearchWord(String word, RdbStore store, SearchWordCallback callback) { this.word = word; this.store = store; this.callback = callback; }
public void run() { try { Document doc = Jsoup.connect("https://www.iciba.com/word?w=" + word).get(); Elements ulElements = doc.getElementsByClass("Mean_part__1RA2V"); String insertSQL = "insert into t_words(word,type,meanings) values(?,?,?);"; List<WordData> wordDataList = new ArrayList<>(); for(Element ulElement: ulElements) { Elements liElements = ulElement.getElementsByTag("li");
for(Element liElement:liElements) { WordData wordData = new WordData(); Elements iElements = liElement.getElementsByTag("i"); for(Element iElement:iElements) { wordData.type = iElement.text(); break; } Elements divElements = liElement.getElementsByTag("div"); // 获得词义 for(Element divElement:divElements) { wordData.meanings = divElements.text(); break; } // 插入每个词性的解释 wordDataList.add(wordData); store.executeSql(insertSQL,new String[]{word, wordData.type,wordData.meanings});
}
break; } if(callback != null) { callback.onResult(wordDataList); }
} catch (Exception e) {
} }}
从本地词库搜索单词的源代码:
网络
public ArrayList<WordData> searchLocalDict(String word) { word = word.toLowerCase(); String[] args = new String[]{word}; ResultSet resultSet = store.querySql("select * from t_words where word = ?",args);
ArrayList<WordData> result = new ArrayList<>(); int i = 0; while(resultSet.goToNextRow()) { WordData wordData = new WordData(); wordData.type = resultSet.getString(2); wordData.meanings = resultSet.getString(3); result.add(wordData);
} resultSet.close(); return result;}
本文分享自微信公众号 - 极客起源(geekculture)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。异步