LoginSignup
22
21

More than 5 years have passed since last update.

JavaScriptでHTTP/HTTPSアクセス・スクレイピングをする

Posted at

JavaScriptでHTTP/HTTPSアクセスをする場合、どうすればいいのか。request/requestvisionmedia/superagentあたりが有名どころでしょうか。でもこれらを使っている時に割と困ることはあります。cookie? form? encode? header? json? xml?

しかし、Node.jsでスクレイピングするならば - プログラマでありたい という記事でなるほどと思いました。request や superagent で面倒な事は、より高度な対応ができる cheeriojs/cheerioktty1220/cheerio-httpclisrveit/mechanize-js を使えばいいのです。

基本的な考え方

  1. 単純なAPIアクセスにはrequestかsuperagentを使う
  2. それ以外の用途は全てcheerioかcheerio-httpcliかmechanize-jsを使う

という考え方でいけば話は実に簡単になるのではないでしょうか。

ここでは個人的偏見により、requestのPromise版であるrequest-promiseとcheerio-httpcliに決め打ちしていきます。

request-promise

requestには派生系として、Promiseに対応したrequest-promiseというライブラリがあります。今の時代ではもう皆さん、最低でもES2015かTypeScriptを使っていると思いますので、旧態依然としたインターフェースのrequestではなくPromiseで楽をしてしまいましょう。もっともrequest-promise自体はbluebirdを使って古いJavaScriptでも動くのですが。

使い方はgithubのチートシートを見れば良いです。

これだけです。これ以外の用途にはcheerio-httpcliを使っちゃいましょう。

cheerio-httpcli

cheerio-httpcli を読めば事足りるでしょう。どうやら、作者さんが大型バージョンアップの再には変更点をQiitaに投稿してらっしゃいます。cheerio tagを見ておけばいいと思います。

まとめ

  • request/superagentは複雑な事をしようとすると面倒が増えるので、単純なAPIアクセスにとどめる
  • 複雑なことはもうmechanizeやcheerio-httpcliに任せてしまう
  • 今の時代Promiseを使って、古いインターフェースやコールバック地獄から解放されましょう
  • 僕はrequest-proimseとcheerio-httpcliに決め打ちしました

今後、このポリシーで困ったことがあったら追加で記事を書いたり、追記しようと思います。

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21