ã40æåã®æç¿ãã§ãcheerio-httpcliã®ä½¿ãæ¹å¦ç¿ä¸ã§ãã
ãµã³ãã«ã³ã¼ããèªãã§åä½ã¯ãªãã¨ãªã解ã£ãã®ã§ã次ã¯æ¬²ãããã¼ã¿ãåå¾ãããã¨ã§ç¿çãã¦ãããã¨æãã¾ããä»åã¯ãå
¬éãããAmazonã®æ¬²ããç©ãªã¹ãï¼wish listï¼ãããAmazonã®åå管çã³ã¼ãã§ããasinãæãåºãã¦ã¿ã¾ãã
欲ããç©ãªã¹ãï¼ã¦ã£ãã·ã¥ãªã¹ãï¼ã®æ§é
ãã¦ã£ãã·ã¥ãªã¹ãã¯ãåã ã«ä¸æã®IDãæ¯ããã¦ããã®ã§ï¼å ¬éè¨å®ããã¦ããã®ã§ããã°ï¼ãã°ã¤ã³ä¸è¦ã§åå¾ã§ãã¾ããä¾ãã°ãç§ã®ã¦ã£ãã·ã¥ãªã¹ãã¯ä¸è¨ã®ãããªURLã«ãªã£ã¦ãã¾ããæå¾ã®ã©ã³ãã ãªè±æ°åã®é¨åããã¦ã£ãã·ã¥ãªã¹ãã®IDã§ãã
ãã¦ã£ãã·ã¥ãªã¹ãã®ä¸èº«ã«ç®ãåãã¦ã¿ãã¨ã1ãã¼ã¸ããã25件ã¥ã¤è¡¨ç¤ºããã¾ãããªã¹ãã25件以ä¸ããå ´åã¯ããã¼ã¸çªå·ã®ãã¿ã³ã§è¡¨ç¤ºããã¸ã£ã³ããããã¨ãã§ãã¾ããããã¦æçµãã¼ã¸ä»¥å¤ã¯ãã次ã¸ãã®ãã¿ã³ãã¯ãªãã¯ã§ããããã«ãªã£ã¦ãã¾ãã
ãä»åã¯ãä¸è¦§ä¸ãããªã³ã¯ã®aã¿ã°ãåå¾ãããã®ä¸ã®hrefå±æ§ããasinãtitleå±æ§ããã¿ã¤ãã«ãåå¾ãã¾ããããã¦ã次ã®ãã¼ã¸ãããå ´åã¯å帰çã«åå¾ããããã«ãã¦ã¿ã¾ãã
ãä¸è¦§ä¸ã®aã¿ã°ã¯è¤æ°ããã®ã§ãããh5ã¿ã°ã®ä¸ã®classãa-link-normalã®aã¿ã°ãåãã¨ããæå®ã®ä»æ¹ãè¯ãããã§ãã
ãã次ã®ãã¼ã¸ãã¯ãxPathãåå¾ããã¨ããã®ãããªæ§é ã«ãªã£ã¦ãã¾ãã
//*[@id="wishlistPagination"]/span/div/ul/li[7]/a
idï¼wishlistPaginationãã辿ã£ã¦ãç´åã®liã¿ã°ãa-lastã¨ããã¯ã©ã¹ãæã£ã¦ããaã¿ã°ãåã£ã¦ããã¨ããããæ¹ã§ã§ãããã§ãã
cheerio-httpcliã使ã£ã¦ã欲ããç©ãªã¹ããåå¾ããã³ã¼ã
ãä¸èª¿ã¹ãåºæ¥ãã®ã§ãcheerio-httpcliã使ã£ã¦åå¾ããã³ã¼ããæ¸ãã¦ã¿ã¾ããããã¾ã§èª¿ã¹ã¦ããã°ãè¦ç´ ã®åå¾ã¯ç°¡åã«ã§ãã¾ãã
'use strict'; /** * Amazonã®ã»ããç©ãªã¹ãï¼å ¬éï¼ããASINãåå¾ * */ var client = require('cheerio-httpcli'); var base = 'http://www.amazon.co.jp'; var url = 'http://www.amazon.co.jp/gp/registry/wishlist/3G4653SB32HMZ/'; function getWishList(url) { //console.log('getWishList: '+url); client.fetch(url).then(function (result) { var $ = result.$; $('h5 .a-link-normal').each(function () { var element = $(this); var href = element.attr('href'); var title = element.attr('title'); var array = href.match(/(\/dp\/+)(.{10})/); var asin = array[2]; if (asin) console.log(asin); }); var next = hasNextPage($); if (next) getWishList(base+next); }) }; function hasNextPage($){ //console.log($('div[id=wishlistPagination] .a-last a').attr('href')); return $('div[id=wishlistPagination] .a-last a').attr('href'); }; getWishList(url);
ããããã¾ããJavaScriptã£ã½ãæ¸ãæ¹ã§ãªãã®ã§ãçãã¾æ¯éæ·»åãã¦ããæ¸ãã®ã ãã¨æãã¦ãã ããã
ææ³
ããããããããããã¨ãããµã¯ãµã¯ã¨æ¸ããããã«ãªã£ã¦ãã¾ãããããããæ¬é¡ã«æ»ã£ã¦ãAWS Lambdaã¨é£æºãã¦APIåçã®é¨åã«ã触ãã¦ãããã¨æãã¾ãã
ã·ãªã¼ãºç®æ¬¡ï¼
Node.jsでスクレイピングするならば
AWS Lambdaでcheerio-httpcliを実行する
Node.jsのWebスクレイピングモジュール 『cheerio-httpcli』の使い方その1 cheerioでhtmlの要素指定
Node.jsのWebスクレイピングモジュール 『cheerio-httpcli』のサンプルソースを読み解く
See Also:
『Rubyによるクローラー開発技法』を書きました
アプリケーションエンジニア向けのAWS本を書きました
『Amazon Web Services パターン別構築・運用ガイド』を書きました