scrape-narou

a japanese novel sns syosetu.com unofficial scrape library

Usage no npm install needed!

<script type="module">
  import scrapeNarou from 'https://cdn.skypack.dev/scrape-narou';
</script>

README

Scrape narou

小説家になろう」非公式 NodeJS用 小説本文取得ライブラリ

インストール

npm install scrape-narou --save

API

2016年6月4日現在のHTML構成を解析し、オブジェクトを返します。今後、小説家になろうの本家ページのHTML構成が変更になると、このライブラリは動作しなくなる ことに注意してください。

  • scrapeNarou(ncode[, page]) -> Promise<result>

    指定のncodeの小説htmlをダウンロードして解析し、オブジェクトに変換します。長編小説の場合pageは必須です。逆に短編小説はpageが使用できません。内容として

  • リクエストに使用したuri

  • 現在のページ番号page

  • 最終ページ番号count

  • 著者名author

  • 著者idauthorId

  • 小説タイトルtitle

を持ちます。長編の場合、これに加えて

  • 小説章名chapter
  • 小説話名subtitle
  • 小説本文content
  • 本文はしがきheader
  • 本文あとがきfooter
  • 広告(著者が設定した)ad
  • 次ページ番号next
  • 前ページ番号prev

を持ちます。短編の場合、上記の代わりに

  • 短編シリーズ名series
  • 短編シリーズidseriesId

を持ちます。content,header,footer,adのhtmlは無害化せず、挿絵も削除しません。

import scrapeNarou from 'scrape-narou';
scrapeNarou('n9669bk', 1).then(result => console.log(result));
// {
//   uri: 'http://ncode.syosetu.com/n9669bk/1/',
//   page: 1,
//   count: 286,
//   author: '理不尽な孫の手',
//   authorId: '288399',
//   title: '無職転生 - 異世界行ったら本気だす -',
//   chapter: '第1章 幼年期',
//   subtitle: 'プロローグ',
//   content: '俺は34歳住所不定無職。(中略)トマトみたいに潰れて死んだ。',
//   header: '',
//   footer: '',
//   ad: '',
//   next: 2,
//   prev: null,
// }

scrapeNarou('n1354ck').then(result => console.log(result));
// {
//   uri: 'http://ncode.syosetu.com/n1354ck/',
//   author: '結木さんと',
//   authorId: '270309',
//   series: 'お菓子な世界より',
//   seriesId: 's5859c',
//   title: 'いやだってお菓子あげたらついてくるっていうからさぁ!!',
//   content: '<br>\n 混沌たる群集の中から(中略)ほんとに覚えててくださいね。<br>\n<br>\n<br>\n<br>'
// }
  • scrapeNarou.r18(ncode[, page]) -> Promise<result>

    scrapeNarouと同じですが、ダウンロード先をhttp://novel18.syosetu.com/に変更します。 また、著者idauthorIdなろう小説18禁APIxidに変わる点に注意して下さい(一般プロフィールで使われるidと別扱いです)。

  • scrapeNarou.toc(ncode) -> Promise<result>

    指定のncodeの目次htmlをダウンロードして解析し、オブジェクトに変換します。短編小説に対して使用するとエラーになります。内容として

    • リクエストに使用したuri
    • ページ総数count
    • 著者名author
    • 著者idauthorId
    • 小説タイトルtitle
    • 小説あらすじcontent
    • chapters または、章なしepisodes

    を持ちます。chapters/episodesは複数のepisodeを持ち、このepisode

    • ページ番号page
    • 小説話名subtitle
    • 作成日時created
    • 更新日時updated

    を持ちます。

    import scrapeNarou from 'scrape-narou';
    scrapeNarou.toc('n9669bk').then(result => console.log(result));
    // {
    //   "uri": "http://ncode.syosetu.com/n9669bk/",
    //   "author": "理不尽な孫の手",
    //   "authorId": "288399",
    //   "title": "無職転生 - 異世界行ったら本気だす -",
    //   "content": "34歳職歴無し住所不定無職童貞のニートは、ある日家を追い出され、…",
    //   "count": 286,
    //   "chapters": [
    //     {
    //       "title": "第1章 幼年期",
    //       "episodes": [
    //         {
    //           "page": 1,
    //           "subtitle": "プロローグ",
    //           "created": Date {2012-11-22},
    //           "updated": Date {2013-11-27}
    //         },
    //         ...
    //       ]
    //     },
    //     ...
    //   ],
    //   "episodes": []
    // }
    
  • scrapeNarou.tocR18(ncode) -> Promise<result>

    scrapeNarou.tocと同じですが、ダウンロード先をhttp://novel18.syosetu.com/に変更します。 また、著者idauthorIdなろう小説18禁APIxidに変わる点に注意して下さい(一般プロフィールで使われるidと別扱いです)。

謝辞

このアプリケーションは非公式のもので、株式会社ヒナプロジェクトが提供しているものではありません。

関連するプロジェクト

開発環境

下記がグローバルインストールされていることが前提です。

  • NodeJS v5.11.1
  • Npm v3.8.6 (or pnpm)
git clone https://github.com/59naga/scrape-narou
cd scrape-narou
npm install

npm test
npm run lint

License

MIT