Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

20131211 やりたいことリスト #463

Closed
Torokun opened this issue Dec 11, 2013 · 12 comments
Closed

20131211 やりたいことリスト #463

Torokun opened this issue Dec 11, 2013 · 12 comments
Assignees
Milestone

Comments

@Torokun
Copy link
Member

@Torokun Torokun commented Dec 11, 2013

2013/12/11 に[やりたい/やった]こと

  • 定時ダッシュ
  • オープンセミナー2014@広島 に申し込む
  • オープンセミナー2014@広島の懇親会 に申し込む
  • オープンセミナー2014@広島の懇親会のLTに申し込む
  • オーム社eStoreの創立100周年記念セール 何か買う。 #464 からパクった
  • node.jsでのスクレイピングの方法を調べる
@ghost ghost assigned Torokun Dec 11, 2013
@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 11, 2013

定時ダッシュに失敗

@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 11, 2013

@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 11, 2013

cheeroを使ってみる

cheeroをインストール

$ npm install cheerio -g

試しに作ったプログラム(scraping.js)

(function() {
    var _http = require('http');
    var _cheerio = require("cheerio");  // スクレイピングするためにHTMLをjQueryのように使えるモジュール
    var _URL = 'http://106n.net/toro/blog/?p=1141'; // 取得するWebページ

    // Webページを取得
    _http.get(_URL, function(res){
        var _statusCode = res.statusCode;
        console.log(_statusCode)
        if(_statusCode != 200) {
            // 200ではない場合は失敗
            return;
        }
        var _resData = '';
        res.on('data', function (chunk) {
            _resData += chunk;
        });
        res.on('end', function () {
            console.log('Get Data Finish!')
            parseResponseData(_resData);
        });
    }).on('error', function(e) {
        cosole.log('Error!')
    });

    function parseResponseData(resData) {
        var _ret = {};
        // ページデータを読み込む
        var $ = _cheerio.load(resData);
        // <head>を取り出す
        var _$head = $('head');
        if(_$head.length < 1) {
            console.log('Error: not found head tag.');
            return _ret;
        }
        // <head>の中の<title>を取り出す
        var _$title = _$head.find('title');
        if(_$title.length == 1) {
            var _title = _$title.text();    // これが取りたいデータ
            console.log('title : "' + _title + '"');
            _ret.title = _title;
        }
        return _ret;
    };
})();

実行

$ node scraping.js 
200
Get Data Finish!
title : "  node.jsのテスティングフレームワークであるjasmine-nodeをインストールして使ってみる — Toroとトロは電子機械の夢を見るか"
@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 11, 2013

オーム社 eStoreから

  • 情熱プログラマー ソフトウェア開発者の幸せな生き方
  • ソフトウェアの世界でキャリアを築く Making it Big in Software

を買った。

@eiel
Copy link
Member

@eiel eiel commented Dec 11, 2013

$('title')を最初からとりいったらダメなん?

@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 12, 2013

@eiel

$('title')を最初からとりいったらダメなん?

<head>の中の<title>を取りたいんですよ。
お行儀の悪いHTMLは排除なのです!

@eiel
Copy link
Member

@eiel eiel commented Dec 12, 2013

の中の<title>を取りたいんですよ。 お行儀の悪いHTMLは排除なのです!

なら $('head > title') でよさそうな感。

@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 12, 2013

<head>の中に他にも取りたいデータがあるときが生じたときに_$headを再利用したいので。
仮に1回で取るなら $('head title') かなぁ。

@Torokun
Copy link
Member Author

@Torokun Torokun commented Dec 28, 2013

マージされたのでクローズ

@Torokun Torokun closed this Dec 28, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
2 participants
You can’t perform that action at this time.