微风小说
https://www.wfxs.tw
采集机器人 (2)2023/04/01
数据采集
{
"bookSourceComment": "coolapk@芜恙,#sitembox dl",
"bookSourceGroup": "Infos",
"bookSourceName": "微风小说",
"bookSourceType": 0,
"bookSourceUrl": "https:\/\/www.wfxs.tw",
"bookUrlPattern": "https:\/\/www.wfxs.tw\/xiaoshuo\/\\d+",
"customOrder": -36638,
"enabled": true,
"enabledExplore": false,
"exploreUrl": "",
"header": "",
"lastUpdateTime": 1611390756146,
"loginUrl": "",
"ruleBookInfo": {
"author": "author",
"coverUrl": "cover",
"init": "<js> \nvar J = org.jsoup.Jsoup.parse(result);\nvar o = selector => String(J.select(selector).text()) ;\nvar og = selector => String(J.select('[property=\"og:' + selector + '\"]').attr('content'));\nvar book = {\n\tname: og('novel:book_name'),\n\tauthor: og('novel:author'),\n\tkind: og('novel:category') + ',' + og('novel:status').replace(\/中|已\/, ''),\n wordCount: o('.count ul li:eq(3) span').replace(\/K\/,'000'),\n\tlatest: og('novel:latest_chapter_name') + '▪' + og('novel:update_time').replace(\/\\\/\/g, '-').match(\/\\D(\\d{2}-\\d{2})\/)[1],\n\tintro: o('.wrapper').replace(\/(^|[。!?]+[”」)】]?)\/g, '$1<br>'),\n\tcover: og('image'),\n\turl: J.select('.tgcj:eq(0)').attr('href'),\n};\nbook;\n<\/js>",
"intro": "intro",
"kind": "kind",
"lastChapter": "latest",
"name": "name",
"tocUrl": "url",
"wordCount": "wordCount"
},
"ruleContent": {
"content": "<js>\ndoc=java.getElement(\"#content\");\ndoc.select(\"ins,script\").remove();\ndoc\n<\/js>",
"imageStyle": "",
"nextContentUrl": ".jump a:eq(3)@href",
"replaceRegex": "##本章.*完[結畢].*",
"sourceRegex": "",
"webJs": ""
},
"ruleExplore": {
"author": "",
"bookList": "",
"bookUrl": "",
"coverUrl": "",
"intro": "",
"kind": "",
"lastChapter": "",
"name": "",
"wordCount": ""
},
"ruleSearch": {
"author": "author",
"bookList": "#sitembox dl\n<js>\nresult.toArray().slice(0, 3).map(el => {\n\tvar url = String(el.select('a:eq(0)').attr('href')).replace(\/^\\\/\/, baseUrl.match(\/(.+?\\\/\\\/[^\\\/]+\\\/)\/)[1]);\n\tvar J = org.jsoup.Jsoup.parse(java.ajax(url));\n\tvar o = selector => String(J.select(selector).text());\n\tvar og = selector => String(J.select('[property=\"og:' + selector + '\"]').attr('content'));\n\treturn {\n\t\tname: og('novel:book_name'),\n\t\tauthor: og('novel:author'),\n\t\tkind: og('novel:category') + ',' + og('novel:status').replace(\/中|已\/, ''),\n wordCount: o('.count ul li:eq(3) span').replace(\/K\/,'000'),\n\t\tlatest: og('novel:latest_chapter_name') + '▪' + og('novel:update_time').replace(\/\\\/\/g, '-').match(\/\\D(\\d{2}-\\d{2})\/)[1],\n\t\tintro: o('.wrapper').replace(\/\\s\/g, ''),\n\t\tcover: og('image'),\n\t\turl: url,\n\t};\n}); \n<\/js>",
"bookUrl": "url",
"coverUrl": "cover",
"intro": "intro",
"kind": "kind",
"lastChapter": "latest",
"name": "name",
"wordCount": "wordCount"
},
"ruleToc": {
"chapterList": "#readerlists ul li",
"chapterName": "a@text",
"chapterUrl": "a@href",
"nextTocUrl": "",
"updateTime": "textNodes"
},
"searchUrl": "\/s.html,{\n \"method\": \"POST\",\n \"body\": \"type=articlename&s={{key}}\"\n}",
"weight": 0
}