ICIBA接口调研
访问ICIBA网站接口默认传参URL
接口传参意义,分析传参含义
callback:iciba JQuery回调函数形式返回到该网站
a=getWordMean:获取单词参数
c=search:查询单词参数
word:传递所需要的单词
list=1,2,3,4,5,8,9,10,12,13,14,15,18,21,22,24,3003,3004,3005
- 1参数显示基础单词信息,路径:JSON.baesInfo
- 2参数显示单词分析信息,路径:JSON.sameAnalysis
- 3柯林斯高阶英汉双解学习词典,路径:JSON.collins
- 4英英词典,路径:JSON.ee_mean
- 5行业词典,路径:JSON.trade_means
- 8双语例句,路径:JSON.sentence
- 9(1,9组合会出现网络释义,路径JSON.netmean),路径:JSON.baesInfo
- 10权威例句,路径:JSON.auth_sentence
- 12释义变形(此参数并没有显示在页面里),路径:JSON.synonym
- 14词组和句型,路径:JSON.phrase
- 15词根词缀,路径:JSON.stems_affixes
- 18百度百科,路径:JSON.encyclopedia
- 21四级真题,路径:JSON.cetFour
- 3003词性、中英例句、翻译并未在页面展示 ,路径:JSON.bidec
- 3005句式用法,路径:JSON.jushi
- 如果list不传参或者输入0默认显示所有信息
产品需求数据
- 输入单词:JSON.baesInfo.word_name
- 音标+翻译:JSON.baesInfo.symbols
- 变形:JSON.baesInfo.exchange
- 双语例句:JSON.sentence
- 句式用法:JSON.jushi
- 权威例句:JSON.auth_sentence
此时list参数传参值为:1,6,8,10,3005 ,减少无用参数,优化请求速度。
http://www.iciba.com/index.php?&a=getWordMean&c=search&list=1,6,8,10,3005&word=test
数据库设计
数据表名:dic_auth_sentence注释:权威例句表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 权威例句id | 主键 |
content | varchar(255) | 内容 | |
link | varchar(255) | 相关链接 | |
source | varchar(50) | 来源 | |
word_id | int(11) | 单词id |
数据表名:dic_base_info注释:音标表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 单词id | 主键 |
word | varchar(128) | 单词 | |
ph_en | varchar(255) | 英 音标 | |
ph_am | varchar(255) | 美 音标 | |
ph_en_mp3 | varchar(255) | 英 音标mp3 | |
ph_am_mp3 | varchar(255) | 美 音标mp3 | |
create_time | datetime | 创建时间 |
数据表名:dic_base_info_test注释: 音标表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 单词id | 主键 |
word | varchar(128) | 单词 | |
ph_en | varchar(255) | 英 音标 | |
ph_am | varchar(255) | 美 音标 | |
ph_en_mp3 | varchar(255) | 英 音标mp3 | |
ph_am_mp3 | varchar(255) | 美 音标mp3 | |
create_time | datetime | 创建时间 |
数据表名:dic_exchange注释: 单词变形表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
word_id | int(11) | 单词id | 主键 |
word_pl | varchar(128) | 复数 | |
word_past | varchar(128) | 过去式 | |
word_done | varchar(128) | 过去分词 | |
word_ing | varchar(128) | 现在分词 | |
word_third | varchar(128) | 第三人称单数 | |
word_er | varchar(128) | 比较级 | |
word_est | varchar(128) | 最高级 | |
word_prep | varchar(128) | 代词 | |
word_adv | varchar(128) | 副词 | |
word_verb | varchar(128) | 动词 | |
word_noun | varchar(128) | 名词 | |
word_adj | varchar(128) | 形容词 | |
word_conn | varchar(128) | 系连词 |
数据表名:dic_jushi注释: 句式用法表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 句式用法id | 主键 |
word_id | int(11) | 单词id | |
english | varchar(255) | 英语例句 | |
chinese | varchar(255) | 中文例句 |
数据表名:dic_parts注释:翻译表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 词性id | 主键 |
word_id | int(11) | 单词id | |
part | varchar(50) | 词性 | |
means | varchar(255) | 释义 |
数据表名:dic_sentence注释:双语例句表
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 例句id | 主键 |
word_id | int(11) | 单词id | |
english | varchar(255) | 例句英文 | |
chinese | varchar(255) | 例句中文 |
数据表名:dic_temp_word注释: 跑批单词
字段 | 数据类型 | 注释 | 类型 |
---|---|---|---|
id | int(11) | 单词id | 主键 |
word | varchar(255) | 单词 | |
is_set | tinyint(1) unsigned zerofill | 0未跑1跑过 |
JAVA实现方案
- HTTPUtils:请求接口,获取资源
1 | String url = "http://www.iciba.com/index.php&a=getWordMean&c=search&list=1,6,8,10,3005&word="; |
- Fastjson:解析获取到的JSON,找到所需要数据的路径
1 | JSONObject jsonObject = JSON.parseObject(res); |
- 遍历获取到的数据并存入MYSQL
1 | int wordId; |
Mapper
1 | "INSERT INTO fanyi_word(word)VALUES(#{word})")//插入传入的单词 ( |
Python 实现方案
1 | import sys |
MySQL_util.py
1 | from config.settings import (MYSQL_DATABASE, MYSQL_HOST, MYSQL_PASSWORD, MYSQL_PROT, MYSQL_USER, MYSQL_CHARSET) |
使用Spring Boot 对Redis缓存单词
1 | package com.xxl.job.executor.mvc.controller; |
使用xxl-job调度中心执行
Java :在xxl-job里运行模式选择Bean模式
使用Java版本在调度中心设置JobHandler执行器名称和,并执行器内添加注解1
"demoJobHandler") (value=
Python:使用GLUE(Python)模式
注:如果在Linux下Python有多个版本,可以在com.xxl.job.core.glue.GlueTypeEnum
下修改脚本执行前缀,如:GLUE_PYTHON("GLUE(Python)", true, "python3.6", ".py")
GLUE(Python)模式代码:
1 | #!/usr/bin/python3.6 |
使用haipproxy匿名代理爬取
这个开源项目爬取一些免费的代理网站,获取代理IP地址,然后对这些IP进行筛选打分,打分策略针对各个IP请求成功率
、响应速度
、最近验证时间
和是否匿名
这四个维度。
这个项目的详细文档在github上的wiki里,我在配置一些Python环境和依赖踩了不少坑,为了用这个项目去特意学习了Python和Redis…