微风小说
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 }