づどど

色々雑記です。

エブリスタ本文スクレイピング方法まとめ

物語を書いて食べていきたいと思ってウェブライターになったらBキャンセルできなくて進化してデジタルマーケターになったのでウェブスクレイピングができます。

 

 

使うもの

googleスプレッドシート様……すごい

あたま……使っておいた

 

 

そもそもスクレイピングとは

scrape……英語でこする

表面をざざざーっとこすって削り取るイメージです

https://www.nicovideo.jp/watch/sm4642670

サンドスクレイパーはいい曲です

 

ウェブスクレイピングはウェブページの好きなとこだけ削り取ってくる感じ

ウェブスクレイピングはWWWから自動的に情報を収集する処理」by wikipedia

そう、削り取るのでめちゃくちゃ便利ですがあんまり歓迎されない

やりすぎると鯖がビジーなるので

過去には刑事事件なってるので、やりすぎには注意

https://ja.wikipedia.org/wiki/%E5%B2%A1%E5%B4%8E%E5%B8%82%E7%AB%8B%E4%B8%AD%E5%A4%AE%E5%9B%B3%E6%9B%B8%E9%A4%A8%E4%BA%8B%E4%BB%B6

やりすぎなきゃセーフ

 

 

エブリスタ本文だけ抜きたいときのやり方

 

googleスプレッドシートを開きます

sheet.new

ってchoromeの検索バーに入れると新しいシートが出てくる。SF。

 

②A1にこれ入れます

=arrayformula("https://estar.jp/novels/抜きたい小説のURLのとこ/viewer?page="&row(A1:A50))

 

拙作「バトルキューブ」だとこう。面白いので読んでね。みんなキューブやろう。

=arrayformula("https://estar.jp/novels/25258947/viewer?page="&row(A1:A50))

 

 

解説

 

arrayformula()

配列関数。簡単にいうと一行いれたらコピペしなくていいやつ。便利。

 

URL

"https://estar.jp/novels/抜きたい小説のURLのとこ/viewer?page="

いわずもがなURL。「抜きたい小説のURLのとこ」は数字になる。

page=のあとの数字はページ番号なので連番にするので削る

 

row(a1:a50)

セルの行番号返してくれます。これはa1からa50それぞれの行番号だから1から50の連番をくれます。かしこい。

50以降抜きたいときは、row(a51:100)とかに変えると良い。便利ね。

 

 

③B1にこれ入れます

=IMPORTXML(A1,"//div[@lang='ja']")

importxmlとarrayformula仲悪い?のでドラッグで50行コピペしてください

 

解説

a1のURLの//div[@lang="ja"]を抜いてきてねっていうお願いです

"//div[@lang='ja']"の部分はサイトに由来しちゃうからサイトの仕様変更があったら変更しないといけない

"//div[@lang='ja']"の部分はXPathってやつ。おぼえると便利。よく"を'に変え忘れる。

googlechoromeの検証→XPathコピーできる神機能があるんだけどあんまり使えない

 

④Loading...

って出ますが、ロード中なので待ってください。3分もない。

100とか1000とか一気しようとすると果てしないことになるのでやらない。

 

⑤仕上げ

B列丸々コピーして、C列選択してctrl+shift+V(値貼り付け)する

値貼り付けしないとテキストじゃない?ので使いづらいです

値貼り付けしたらimportxmlは消そう。Loading....なると迷惑なので。

もっといっぱいページ抜きたいんじゃあって人は、新しいシート作って、うまいことやると良いです

 

 

注意点

やりすぎ注意

改行は概念として消えました

抜けなかったらなんかエラーです

 

 

参考スプレッドシート

エブリスタ抜き方 - Google スプレッドシート

閲覧可にしてあるのでご参考まで

 

質問あったら石津度々まで。https://twitter.com/doudouishizu