Skip to content

Instantly share code, notes, and snippets.

@tokunami
Created July 14, 2014 04:14
Show Gist options
  • Save tokunami/d6ad26ec40ed468d27a9 to your computer and use it in GitHub Desktop.
Save tokunami/d6ad26ec40ed468d27a9 to your computer and use it in GitHub Desktop.
Cheerioでスクレイピング

$ npm install cheerio --save

--saveをつけるとpackage.jsonに反映してくれる

  • client.js
var request = require('request');
var r = request.defaults({'proxy':'<proxy url>:<port>'});

var cheerio = require('cheerio');

var url = 'http://news.google.co.jp/';

r(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    
    $ = cheerio.load(body);  //Create cheerio instance

    var resurl = response.request.href;
    var title = $("title").text();

    console.log(resurl);
    console.log(title);
  }
});
  • 結果
http://news.google.co.jp/
Google ニュース
  • 結果が返ってくることを確認。
  • 文字コードが考慮されていないので、対象のwebページがshift-thisとかの場合、文字化けする。 (iconvを使えば解決できそうだが、今はとりあえずそのまま)
  • とりあえずここまで。
次のアクション
  • requestとcheerioの中身把握をすすめる(コードリーディング)
  • 抜き出した単語を使って次のアクション(google検索とか)
  • requesutでhtml取得→cheerioで単語抜き出し→次のアクション を一定間隔おきに実行
@stoshiya
Copy link

文字コードの種類はたくさんありますが,日本語を表現できるものが何種類あるかは知っておくといいでしょう.Terminal.appなどのターミナルソフトの表示モードとシェルの設定が一致しないとマルチバイトは文字化けをおこします.これはブラウザとWebコンテンツでも同じです.

@stoshiya
Copy link

細かい点だが,shift-thisではなくshift-jisね.

@tokunami
Copy link
Author

覚え書き

@tokunami
Copy link
Author

コメントありがとうございます。文字コードについて調べたところ、Shift-JIS、EUC-JP、JIS、UTF-8などがあるということだけはわかりました。文字コード問題はなかなか根深そうですね。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment