Forráskód Böngészése

feat: gushi import tangshi300

RyaneMax 8 hónapja
szülő
commit
346840e4b5

+ 1 - 0
server/import/libai/.gitignore

@@ -0,0 +1 @@
+node_modules/

+ 54 - 0
server/import/libai/README.md

@@ -0,0 +1,54 @@
+# 示例:古诗文资料获取并转存数据库
+
+
+# 资料站点
+- 资料:https://www.gushicimingju.com/
+- 数据范式:Shige
+
+# 数据范式 Shige
+- title:String 题目
+- author:String 作者
+- dyansty:String 朝代
+- content:Stirng 内容
+
+# 任务1:爬取数据集,并形成Shige数组
+- 目标:唐诗三百首全集 https://www.gushicimingju.com/gushi/tangshisanbaishou/
+
+## 纯前端DOM批量分析
+- 右键,分析目标站点,同类DOM值的selector特点
+    - 选择器特征:.main-content内容区域所有的 a标签
+    - 字符串特征:href="/gushi/shi/586.html"
+``` js
+
+let ElArray = document.querySelectorAll(".main-content a")
+let list = []
+for(let i=0;i<ElArray.length;i++){
+    list[i] = ElArray[i]
+}
+// HTMLElement 转换成 href字符串 "https://www.gushicimingju.com/gushi/shi/113.html"
+console.log("DOM选择后,数量:",list.length)
+list = list.map(el=>el.href)
+// 过滤符合特征的链接地址
+list = list.filter(item=>(item?.indexOf("/gushi/shi/")>-1))
+console.log("字符过滤后,数量:",list.length)
+// 将list数据保存至href.js
+
+```
+
+## 后端的页面分析
+
+### 依赖环境
+https://www.npmjs.com/package/cheerio
+
+``` bash
+npm i cheerio -S
+```
+
+
+# 任务2:将数组批量导入系统
+- 参考代码:import.js
+    - 实现href链接html数据获取
+    - 通过cheerio进行DOM分析
+    - 通过css selector标记准确字段
+    - Parse.Query查重
+    - Parse.Object保存

+ 297 - 0
server/import/libai/href.js

@@ -0,0 +1,297 @@
+module.exports.GushiHrefList = [
+    "https://www.gushicimingju.com/gushi/shi/188017.html",
+    "https://www.gushicimingju.com/gushi/shi/52.html",
+    "https://www.gushicimingju.com/gushi/shi/102.html",
+    "https://www.gushicimingju.com/gushi/shi/5.html",
+    "https://www.gushicimingju.com/gushi/shi/57.html",
+    "https://www.gushicimingju.com/gushi/shi/103.html",
+    "https://www.gushicimingju.com/gushi/shi/279.html",
+    "https://www.gushicimingju.com/gushi/shi/109.html",
+    "https://www.gushicimingju.com/gushi/shi/100.html",
+    "https://www.gushicimingju.com/gushi/shi/101.html",
+    "https://www.gushicimingju.com/gushi/shi/110.html",
+    "https://www.gushicimingju.com/gushi/shi/111.html",
+    "https://www.gushicimingju.com/gushi/shi/118.html",
+    "https://www.gushicimingju.com/gushi/shi/113.html",
+    "https://www.gushicimingju.com/gushi/shi/119.html",
+    "https://www.gushicimingju.com/gushi/shi/481.html",
+    "https://www.gushicimingju.com/gushi/shi/114.html",
+    "https://www.gushicimingju.com/gushi/shi/539.html",
+    "https://www.gushicimingju.com/gushi/shi/540.html",
+    "https://www.gushicimingju.com/gushi/shi/121.html",
+    "https://www.gushicimingju.com/gushi/shi/541.html",
+    "https://www.gushicimingju.com/gushi/shi/542.html",
+    "https://www.gushicimingju.com/gushi/shi/544.html",
+    "https://www.gushicimingju.com/gushi/shi/545.html",
+    "https://www.gushicimingju.com/gushi/shi/546.html",
+    "https://www.gushicimingju.com/gushi/shi/547.html",
+    "https://www.gushicimingju.com/gushi/shi/548.html",
+    "https://www.gushicimingju.com/gushi/shi/549.html",
+    "https://www.gushicimingju.com/gushi/shi/550.html",
+    "https://www.gushicimingju.com/gushi/shi/551.html",
+    "https://www.gushicimingju.com/gushi/shi/552.html",
+    "https://www.gushicimingju.com/gushi/shi/553.html",
+    "https://www.gushicimingju.com/gushi/shi/117.html",
+    "https://www.gushicimingju.com/gushi/shi/149.html",
+    "https://www.gushicimingju.com/gushi/shi/556.html",
+    "https://www.gushicimingju.com/gushi/shi/394.html",
+    "https://www.gushicimingju.com/gushi/shi/554.html",
+    "https://www.gushicimingju.com/gushi/shi/555.html",
+    "https://www.gushicimingju.com/gushi/shi/557.html",
+    "https://www.gushicimingju.com/gushi/shi/95.html",
+    "https://www.gushicimingju.com/gushi/shi/563.html",
+    "https://www.gushicimingju.com/gushi/shi/448.html",
+    "https://www.gushicimingju.com/gushi/shi/564.html",
+    "https://www.gushicimingju.com/gushi/shi/449.html",
+    "https://www.gushicimingju.com/gushi/shi/227.html",
+    "https://www.gushicimingju.com/gushi/shi/558.html",
+    "https://www.gushicimingju.com/gushi/shi/559.html",
+    "https://www.gushicimingju.com/gushi/shi/560.html",
+    "https://www.gushicimingju.com/gushi/shi/561.html",
+    "https://www.gushicimingju.com/gushi/shi/562.html",
+    "https://www.gushicimingju.com/gushi/shi/483.html",
+    "https://www.gushicimingju.com/gushi/shi/207.html",
+    "https://www.gushicimingju.com/gushi/shi/208.html",
+    "https://www.gushicimingju.com/gushi/shi/204.html",
+    "https://www.gushicimingju.com/gushi/shi/565.html",
+    "https://www.gushicimingju.com/gushi/shi/566.html",
+    "https://www.gushicimingju.com/gushi/shi/567.html",
+    "https://www.gushicimingju.com/gushi/shi/280.html",
+    "https://www.gushicimingju.com/gushi/shi/568.html",
+    "https://www.gushicimingju.com/gushi/shi/569.html",
+    "https://www.gushicimingju.com/gushi/shi/570.html",
+    "https://www.gushicimingju.com/gushi/shi/571.html",
+    "https://www.gushicimingju.com/gushi/shi/572.html",
+    "https://www.gushicimingju.com/gushi/shi/573.html",
+    "https://www.gushicimingju.com/gushi/shi/173.html",
+    "https://www.gushicimingju.com/gushi/shi/14.html",
+    "https://www.gushicimingju.com/gushi/shi/139.html",
+    "https://www.gushicimingju.com/gushi/shi/574.html",
+    "https://www.gushicimingju.com/gushi/shi/105.html",
+    "https://www.gushicimingju.com/gushi/shi/575.html",
+    "https://www.gushicimingju.com/gushi/shi/576.html",
+    "https://www.gushicimingju.com/gushi/shi/473.html",
+    "https://www.gushicimingju.com/gushi/shi/120.html",
+    "https://www.gushicimingju.com/gushi/shi/21.html",
+    "https://www.gushicimingju.com/gushi/shi/150.html",
+    "https://www.gushicimingju.com/gushi/shi/25.html",
+    "https://www.gushicimingju.com/gushi/shi/7.html",
+    "https://www.gushicimingju.com/gushi/shi/375.html",
+    "https://www.gushicimingju.com/gushi/shi/386.html",
+    "https://www.gushicimingju.com/gushi/shi/459.html",
+    "https://www.gushicimingju.com/gushi/shi/577.html",
+    "https://www.gushicimingju.com/gushi/shi/578.html",
+    "https://www.gushicimingju.com/gushi/shi/259.html",
+    "https://www.gushicimingju.com/gushi/shi/30.html",
+    "https://www.gushicimingju.com/gushi/shi/83.html",
+    "https://www.gushicimingju.com/gushi/shi/579.html",
+    "https://www.gushicimingju.com/gushi/shi/580.html",
+    "https://www.gushicimingju.com/gushi/shi/581.html",
+    "https://www.gushicimingju.com/gushi/shi/583.html",
+    "https://www.gushicimingju.com/gushi/shi/543.html",
+    "https://www.gushicimingju.com/gushi/shi/584.html",
+    "https://www.gushicimingju.com/gushi/shi/585.html",
+    "https://www.gushicimingju.com/gushi/shi/451.html",
+    "https://www.gushicimingju.com/gushi/shi/65.html",
+    "https://www.gushicimingju.com/gushi/shi/586.html",
+    "https://www.gushicimingju.com/gushi/shi/587.html",
+    "https://www.gushicimingju.com/gushi/shi/10.html",
+    "https://www.gushicimingju.com/gushi/shi/376.html",
+    "https://www.gushicimingju.com/gushi/shi/588.html",
+    "https://www.gushicimingju.com/gushi/shi/589.html",
+    "https://www.gushicimingju.com/gushi/shi/384.html",
+    "https://www.gushicimingju.com/gushi/shi/590.html",
+    "https://www.gushicimingju.com/gushi/shi/591.html",
+    "https://www.gushicimingju.com/gushi/shi/592.html",
+    "https://www.gushicimingju.com/gushi/shi/383.html",
+    "https://www.gushicimingju.com/gushi/shi/75.html",
+    "https://www.gushicimingju.com/gushi/shi/593.html",
+    "https://www.gushicimingju.com/gushi/shi/16.html",
+    "https://www.gushicimingju.com/gushi/shi/594.html",
+    "https://www.gushicimingju.com/gushi/shi/476.html",
+    "https://www.gushicimingju.com/gushi/shi/595.html",
+    "https://www.gushicimingju.com/gushi/shi/596.html",
+    "https://www.gushicimingju.com/gushi/shi/597.html",
+    "https://www.gushicimingju.com/gushi/shi/477.html",
+    "https://www.gushicimingju.com/gushi/shi/467.html",
+    "https://www.gushicimingju.com/gushi/shi/598.html",
+    "https://www.gushicimingju.com/gushi/shi/485.html",
+    "https://www.gushicimingju.com/gushi/shi/599.html",
+    "https://www.gushicimingju.com/gushi/shi/484.html",
+    "https://www.gushicimingju.com/gushi/shi/115.html",
+    "https://www.gushicimingju.com/gushi/shi/600.html",
+    "https://www.gushicimingju.com/gushi/shi/601.html",
+    "https://www.gushicimingju.com/gushi/shi/602.html",
+    "https://www.gushicimingju.com/gushi/shi/480.html",
+    "https://www.gushicimingju.com/gushi/shi/603.html",
+    "https://www.gushicimingju.com/gushi/shi/604.html",
+    "https://www.gushicimingju.com/gushi/shi/605.html",
+    "https://www.gushicimingju.com/gushi/shi/606.html",
+    "https://www.gushicimingju.com/gushi/shi/607.html",
+    "https://www.gushicimingju.com/gushi/shi/608.html",
+    "https://www.gushicimingju.com/gushi/shi/609.html",
+    "https://www.gushicimingju.com/gushi/shi/610.html",
+    "https://www.gushicimingju.com/gushi/shi/611.html",
+    "https://www.gushicimingju.com/gushi/shi/612.html",
+    "https://www.gushicimingju.com/gushi/shi/614.html",
+    "https://www.gushicimingju.com/gushi/shi/615.html",
+    "https://www.gushicimingju.com/gushi/shi/616.html",
+    "https://www.gushicimingju.com/gushi/shi/617.html",
+    "https://www.gushicimingju.com/gushi/shi/618.html",
+    "https://www.gushicimingju.com/gushi/shi/619.html",
+    "https://www.gushicimingju.com/gushi/shi/620.html",
+    "https://www.gushicimingju.com/gushi/shi/621.html",
+    "https://www.gushicimingju.com/gushi/shi/144.html",
+    "https://www.gushicimingju.com/gushi/shi/622.html",
+    "https://www.gushicimingju.com/gushi/shi/623.html",
+    "https://www.gushicimingju.com/gushi/shi/624.html",
+    "https://www.gushicimingju.com/gushi/shi/129.html",
+    "https://www.gushicimingju.com/gushi/shi/625.html",
+    "https://www.gushicimingju.com/gushi/shi/169.html",
+    "https://www.gushicimingju.com/gushi/shi/626.html",
+    "https://www.gushicimingju.com/gushi/shi/130.html",
+    "https://www.gushicimingju.com/gushi/shi/627.html",
+    "https://www.gushicimingju.com/gushi/shi/628.html",
+    "https://www.gushicimingju.com/gushi/shi/629.html",
+    "https://www.gushicimingju.com/gushi/shi/630.html",
+    "https://www.gushicimingju.com/gushi/shi/631.html",
+    "https://www.gushicimingju.com/gushi/shi/632.html",
+    "https://www.gushicimingju.com/gushi/shi/633.html",
+    "https://www.gushicimingju.com/gushi/shi/634.html",
+    "https://www.gushicimingju.com/gushi/shi/635.html",
+    "https://www.gushicimingju.com/gushi/shi/465.html",
+    "https://www.gushicimingju.com/gushi/shi/636.html",
+    "https://www.gushicimingju.com/gushi/shi/638.html",
+    "https://www.gushicimingju.com/gushi/shi/639.html",
+    "https://www.gushicimingju.com/gushi/shi/640.html",
+    "https://www.gushicimingju.com/gushi/shi/69.html",
+    "https://www.gushicimingju.com/gushi/shi/641.html",
+    "https://www.gushicimingju.com/gushi/shi/642.html",
+    "https://www.gushicimingju.com/gushi/shi/643.html",
+    "https://www.gushicimingju.com/gushi/shi/644.html",
+    "https://www.gushicimingju.com/gushi/shi/645.html",
+    "https://www.gushicimingju.com/gushi/shi/646.html",
+    "https://www.gushicimingju.com/gushi/shi/457.html",
+    "https://www.gushicimingju.com/gushi/shi/385.html",
+    "https://www.gushicimingju.com/gushi/shi/647.html",
+    "https://www.gushicimingju.com/gushi/shi/648.html",
+    "https://www.gushicimingju.com/gushi/shi/458.html",
+    "https://www.gushicimingju.com/gushi/shi/378.html",
+    "https://www.gushicimingju.com/gushi/shi/649.html",
+    "https://www.gushicimingju.com/gushi/shi/650.html",
+    "https://www.gushicimingju.com/gushi/shi/651.html",
+    "https://www.gushicimingju.com/gushi/shi/652.html",
+    "https://www.gushicimingju.com/gushi/shi/653.html",
+    "https://www.gushicimingju.com/gushi/shi/654.html",
+    "https://www.gushicimingju.com/gushi/shi/655.html",
+    "https://www.gushicimingju.com/gushi/shi/656.html",
+    "https://www.gushicimingju.com/gushi/shi/657.html",
+    "https://www.gushicimingju.com/gushi/shi/658.html",
+    "https://www.gushicimingju.com/gushi/shi/659.html",
+    "https://www.gushicimingju.com/gushi/shi/660.html",
+    "https://www.gushicimingju.com/gushi/shi/661.html",
+    "https://www.gushicimingju.com/gushi/shi/662.html",
+    "https://www.gushicimingju.com/gushi/shi/428.html",
+    "https://www.gushicimingju.com/gushi/shi/663.html",
+    "https://www.gushicimingju.com/gushi/shi/664.html",
+    "https://www.gushicimingju.com/gushi/shi/497.html",
+    "https://www.gushicimingju.com/gushi/shi/665.html",
+    "https://www.gushicimingju.com/gushi/shi/123.html",
+    "https://www.gushicimingju.com/gushi/shi/122.html",
+    "https://www.gushicimingju.com/gushi/shi/666.html",
+    "https://www.gushicimingju.com/gushi/shi/308.html",
+    "https://www.gushicimingju.com/gushi/shi/667.html",
+    "https://www.gushicimingju.com/gushi/shi/125.html",
+    "https://www.gushicimingju.com/gushi/shi/668.html",
+    "https://www.gushicimingju.com/gushi/shi/407.html",
+    "https://www.gushicimingju.com/gushi/shi/669.html",
+    "https://www.gushicimingju.com/gushi/shi/670.html",
+    "https://www.gushicimingju.com/gushi/shi/671.html",
+    "https://www.gushicimingju.com/gushi/shi/468.html",
+    "https://www.gushicimingju.com/gushi/shi/469.html",
+    "https://www.gushicimingju.com/gushi/shi/111.html",
+    "https://www.gushicimingju.com/gushi/shi/15.html",
+    "https://www.gushicimingju.com/gushi/shi/672.html",
+    "https://www.gushicimingju.com/gushi/shi/673.html",
+    "https://www.gushicimingju.com/gushi/shi/674.html",
+    "https://www.gushicimingju.com/gushi/shi/482.html",
+    "https://www.gushicimingju.com/gushi/shi/479.html",
+    "https://www.gushicimingju.com/gushi/shi/22.html",
+    "https://www.gushicimingju.com/gushi/shi/388.html",
+    "https://www.gushicimingju.com/gushi/shi/276.html",
+    "https://www.gushicimingju.com/gushi/shi/486.html",
+    "https://www.gushicimingju.com/gushi/shi/675.html",
+    "https://www.gushicimingju.com/gushi/shi/676.html",
+    "https://www.gushicimingju.com/gushi/shi/677.html",
+    "https://www.gushicimingju.com/gushi/shi/678.html",
+    "https://www.gushicimingju.com/gushi/shi/432.html",
+    "https://www.gushicimingju.com/gushi/shi/679.html",
+    "https://www.gushicimingju.com/gushi/shi/680.html",
+    "https://www.gushicimingju.com/gushi/shi/116.html",
+    "https://www.gushicimingju.com/gushi/shi/681.html",
+    "https://www.gushicimingju.com/gushi/shi/682.html",
+    "https://www.gushicimingju.com/gushi/shi/683.html",
+    "https://www.gushicimingju.com/gushi/shi/307.html",
+    "https://www.gushicimingju.com/gushi/shi/684.html",
+    "https://www.gushicimingju.com/gushi/shi/685.html",
+    "https://www.gushicimingju.com/gushi/shi/686.html",
+    "https://www.gushicimingju.com/gushi/shi/687.html",
+    "https://www.gushicimingju.com/gushi/shi/688.html",
+    "https://www.gushicimingju.com/gushi/shi/689.html",
+    "https://www.gushicimingju.com/gushi/shi/427.html",
+    "https://www.gushicimingju.com/gushi/shi/690.html",
+    "https://www.gushicimingju.com/gushi/shi/29.html",
+    "https://www.gushicimingju.com/gushi/shi/691.html",
+    "https://www.gushicimingju.com/gushi/shi/32.html",
+    "https://www.gushicimingju.com/gushi/shi/692.html",
+    "https://www.gushicimingju.com/gushi/shi/693.html",
+    "https://www.gushicimingju.com/gushi/shi/694.html",
+    "https://www.gushicimingju.com/gushi/shi/297.html",
+    "https://www.gushicimingju.com/gushi/shi/8.html",
+    "https://www.gushicimingju.com/gushi/shi/23.html",
+    "https://www.gushicimingju.com/gushi/shi/695.html",
+    "https://www.gushicimingju.com/gushi/shi/24.html",
+    "https://www.gushicimingju.com/gushi/shi/696.html",
+    "https://www.gushicimingju.com/gushi/shi/697.html",
+    "https://www.gushicimingju.com/gushi/shi/613.html",
+    "https://www.gushicimingju.com/gushi/shi/698.html",
+    "https://www.gushicimingju.com/gushi/shi/699.html",
+    "https://www.gushicimingju.com/gushi/shi/700.html",
+    "https://www.gushicimingju.com/gushi/shi/701.html",
+    "https://www.gushicimingju.com/gushi/shi/35.html",
+    "https://www.gushicimingju.com/gushi/shi/184.html",
+    "https://www.gushicimingju.com/gushi/shi/462.html",
+    "https://www.gushicimingju.com/gushi/shi/702.html",
+    "https://www.gushicimingju.com/gushi/shi/703.html",
+    "https://www.gushicimingju.com/gushi/shi/704.html",
+    "https://www.gushicimingju.com/gushi/shi/705.html",
+    "https://www.gushicimingju.com/gushi/shi/707.html",
+    "https://www.gushicimingju.com/gushi/shi/164.html",
+    "https://www.gushicimingju.com/gushi/shi/708.html",
+    "https://www.gushicimingju.com/gushi/shi/709.html",
+    "https://www.gushicimingju.com/gushi/shi/710.html",
+    "https://www.gushicimingju.com/gushi/shi/167.html",
+    "https://www.gushicimingju.com/gushi/shi/711.html",
+    "https://www.gushicimingju.com/gushi/shi/712.html",
+    "https://www.gushicimingju.com/gushi/shi/713.html",
+    "https://www.gushicimingju.com/gushi/shi/127.html",
+    "https://www.gushicimingju.com/gushi/shi/715.html",
+    "https://www.gushicimingju.com/gushi/shi/714.html",
+    "https://www.gushicimingju.com/gushi/shi/716.html",
+    "https://www.gushicimingju.com/gushi/shi/124.html",
+    "https://www.gushicimingju.com/gushi/shi/717.html",
+    "https://www.gushicimingju.com/gushi/shi/718.html",
+    "https://www.gushicimingju.com/gushi/shi/719.html",
+    "https://www.gushicimingju.com/gushi/shi/720.html",
+    "https://www.gushicimingju.com/gushi/shi/721.html",
+    "https://www.gushicimingju.com/gushi/shi/471.html",
+    "https://www.gushicimingju.com/gushi/shi/723.html",
+    "https://www.gushicimingju.com/gushi/shi/724.html",
+    "https://www.gushicimingju.com/gushi/shi/470.html",
+    "https://www.gushicimingju.com/gushi/shi/725.html",
+    "https://www.gushicimingju.com/gushi/shi/726.html",
+    "https://www.gushicimingju.com/gushi/shi/196.html",
+    "https://www.gushicimingju.com/gushi/shi/396.html",
+    "https://www.gushicimingju.com/gushi/shi/487.html",
+    "https://www.gushicimingju.com/gushi/shi/426.html"
+]

+ 60 - 0
server/import/libai/import.js

@@ -0,0 +1,60 @@
+const cheerio = require('cheerio');
+const { GushiHrefList } = require("./href")
+
+// 引用Parse JS SDK
+const Parse = require("parse/node");
+Parse.initialize("dev"); // 设置applicationId
+Parse.serverURL = "http://web2023.fmode.cn:9999/parse"; // 设置serverURL
+
+
+// 实现分页抓取数据,并保存
+main()
+async function main(){
+    // let list = [GushiHrefList[0]]
+    let list = GushiHrefList
+    list.forEach(async href=>{
+        let gushi = await getGushiDataFromHref(href);
+        if(!gushi?.title || !gushi?.author) return;
+        // 查重
+        let exists = await checkExists(gushi);
+        if(exists?.id) return
+        // 新增
+        let Shige = Parse.Object.extend("Shige");
+        let sg = new Shige();
+        sg.set(gushi);
+        sg.save();
+    })
+}
+async function checkExists(gushi){
+    let query = new Parse.Query("Shige");
+    query.equalTo("title",gushi?.title);
+    query.equalTo("author",gushi?.author);
+    query.equalTo("dynasty",gushi?.dynasty);
+    await query.first();
+    return await query.first();
+}
+
+async function getGushiDataFromHref(href){
+    let gushi = {}
+
+    let response
+    try{
+        response = await fetch(href);
+    }catch(err){
+        console.log("失败:",href)
+        return {}
+    }
+    let html = await response.text()
+    const $ = cheerio.load(html);
+
+    gushi.title = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(1) > h1').text();
+    gushi.author = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(1) > div.author-simple-info > span:nth-child(3) > a').text();
+    gushi.dynasty = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(1) > div.author-simple-info > span:nth-child(1) > a').text();
+    gushi.content = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(1) > div.shici-content.check-more').html();
+    gushi.intro = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(5) > div:nth-child(2)').html();
+    gushi.yiwen = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(5) > div:nth-child(4)').html();
+    gushi.note = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(5) > div:nth-child(6)').html()
+    gushi.review = $('body > div.container.basic-page > div > div.more-container.col-md-8 > div:nth-child(5) > div:nth-child(8)').html()
+    console.log(href,gushi)
+    return gushi
+}

+ 197 - 0
server/import/libai/package-lock.json

@@ -0,0 +1,197 @@
+{
+  "name": "libai",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "libai",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "cheerio": "^1.0.0-rc.12"
+      }
+    },
+    "node_modules/boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
+    },
+    "node_modules/cheerio": {
+      "version": "1.0.0-rc.12",
+      "resolved": "https://registry.npmmirror.com/cheerio/-/cheerio-1.0.0-rc.12.tgz",
+      "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==",
+      "dependencies": {
+        "cheerio-select": "^2.1.0",
+        "dom-serializer": "^2.0.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1",
+        "htmlparser2": "^8.0.1",
+        "parse5": "^7.0.0",
+        "parse5-htmlparser2-tree-adapter": "^7.0.0"
+      },
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/cheerio?sponsor=1"
+      }
+    },
+    "node_modules/cheerio-select": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/cheerio-select/-/cheerio-select-2.1.0.tgz",
+      "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-select": "^5.1.0",
+        "css-what": "^6.1.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-select": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmmirror.com/css-select/-/css-select-5.1.0.tgz",
+      "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
+      "dependencies": {
+        "boolbase": "^1.0.0",
+        "css-what": "^6.1.0",
+        "domhandler": "^5.0.2",
+        "domutils": "^3.0.1",
+        "nth-check": "^2.0.1"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/css-what": {
+      "version": "6.1.0",
+      "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+      "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+      "engines": {
+        "node": ">= 6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/fb55"
+      }
+    },
+    "node_modules/dom-serializer": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-2.0.0.tgz",
+      "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.2",
+        "entities": "^4.2.0"
+      },
+      "funding": {
+        "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
+      }
+    },
+    "node_modules/domelementtype": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+      "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ]
+    },
+    "node_modules/domhandler": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-5.0.3.tgz",
+      "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
+      "dependencies": {
+        "domelementtype": "^2.3.0"
+      },
+      "engines": {
+        "node": ">= 4"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domhandler?sponsor=1"
+      }
+    },
+    "node_modules/domutils": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmmirror.com/domutils/-/domutils-3.1.0.tgz",
+      "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
+      "dependencies": {
+        "dom-serializer": "^2.0.0",
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/domutils?sponsor=1"
+      }
+    },
+    "node_modules/entities": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
+      "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+      "engines": {
+        "node": ">=0.12"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
+      }
+    },
+    "node_modules/htmlparser2": {
+      "version": "8.0.2",
+      "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-8.0.2.tgz",
+      "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==",
+      "funding": [
+        "https://github.com/fb55/htmlparser2?sponsor=1",
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/fb55"
+        }
+      ],
+      "dependencies": {
+        "domelementtype": "^2.3.0",
+        "domhandler": "^5.0.3",
+        "domutils": "^3.0.1",
+        "entities": "^4.4.0"
+      }
+    },
+    "node_modules/nth-check": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+      "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+      "dependencies": {
+        "boolbase": "^1.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/fb55/nth-check?sponsor=1"
+      }
+    },
+    "node_modules/parse5": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.1.2.tgz",
+      "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==",
+      "dependencies": {
+        "entities": "^4.4.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    },
+    "node_modules/parse5-htmlparser2-tree-adapter": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz",
+      "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==",
+      "dependencies": {
+        "domhandler": "^5.0.2",
+        "parse5": "^7.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/inikulin/parse5?sponsor=1"
+      }
+    }
+  }
+}

+ 14 - 0
server/import/libai/package.json

@@ -0,0 +1,14 @@
+{
+  "name": "libai",
+  "version": "1.0.0",
+  "description": "- 资料:https://www.gushicimingju.com/\r - 数据范式:Shige",
+  "main": "href.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "cheerio": "^1.0.0-rc.12"
+  }
+}