2017-01-22 13 views
1

私はサーバー側からクリックをしようとしています。NodeJSのクリックイベントを作成する

nodeJSを使用しており、JQuery関数を使用できません。

私は.nextクラスをクリックします。

これは私がどうなるのかです:こすりするためのHTMLコードよりも

while (nbrPage > 0) 
{ 
    //my scraping code 
    nbrPage--; 
    $('.next').click(); 
} 

(注)このようなものです:

<span class="next"> 
    <a id="nextPage-159c6fa8635" class="page" href="/blablabla"></a> 
</span> 

はNodeJSコードまたはどのようにしてjQueryのメソッドを使用する方法を誰もが知っていますNodeJSでクリック機能を使用しますか?

編集:私はウェブサイトを削っているので、各ページをループして各ページのデータをスクラップしたいと思います。このためには、次のページに進み、下のhtmlコードをクリックする必要があります。言い換えれば、私のノードのjsコードで$('.next').click()のようなJQuery関数を使用します(requestcheerioを使用)。

クリックイベントを処理したくないという点に注意して、私はクリックを探しています。

ご協力ありがとうございました

+0

はあなたが完全な形で達成しようとしているのかを説明してもらえます - それはコード内でどのように見えるかについて今

? – theonlygusti

+0

私の質問を編集しました@theonlygusti – rastafalow

+0

jqueryが動作しないのはなぜですか? – theonlygusti

答えて

0

Node.jsでは実行できません。 Node.jsはクライアント側ではなくサーバー側です。 解決策として、リンクでhrefを解析し、次のページをスクラップするように要求することができます。これは、サーバー側のscrappersが通常どのように動作するかです。

0

Cheerioは、Node.JS内でjQueryを利用できる非常に便利なツールです。あなたはでより多くの情報をオーバー見つけることができます - https://github.com/cheeriojs/cheerio

要求がHTTP 呼び出しを行う可能性が最も簡単な方法になるように設計されています。 HTTPSをサポートし、デフォルトではリダイレクトに従います。

は自分のドキュメントを参照してください - サーバ側の場合https://github.com/request/request

を、あなたは「nextPage-」で起動idのHREFを見つけるために、関数を作成する必要があります。次に、属性hrefの値を取得する必要があることがわかった場合。

そこから、あなたがすでに持っていると思っている「要求」スクリプトにその値を戻し、「nextPage-」がもう見つからなくなるまで廃棄を続行します。

それ自体を呼び出す関数の反復シーケンスを「再帰」と呼びます。

// Load Dependencies 
const CHEERIO = require("cheerio"); 
const REQUEST = require("request"); 


/** 
* Scraps HTML to find next page URL 
* 
* @function getNextPageUrl 
* 
* @param {string} HTML 
* 
* @returns {string || boolean} Returns URL or False 
*/ 
function getNextPageUrl(HTML) { 

    // Load in scrapped html 
    let $ = CHEERIO.load(HTML); 

    // Find ID that starts with `nextPage-` 
    let nextPage = $("span[id^='nextPage-']:first"); 

    // If it is 0, its false 
    if(nextPage.length) { 
     // Return href attribute value 
     return nextPage.attr("href"); 
    } else { 
     // Nothing found, return false 
     return false; 
    } 

} 


/** 
* Scraps the HTML from pages 
* 
* @function scrapper 
* 
* @param {string} URL 
* 
* @returns {string || boolean} Returns URL or False 
*/ 
function scrapper(URL) { 

    // Check if URL was provided 
    if(!URL) { 
     return fasle; 
    } 

    // Send out request to URL 
    REQUEST(URL, function(error, response, body) { 

     // Check for errors 
     if(!error && response.statusCode == 200) { 
      console.log(body) // Show the HTML 

      // Recursion 
      let URL = getNextPageURL(body); 
      scrapper(URL); 

     } else { 
      return false; 
     } 

    }); 
} 


// Pass to scrapper function test 
//console.log(getNextPageURL("<span class='next'><a id='nextPage-159c6fa8635' class='page' href='/blablabla'></a></span>")); 

// Start the initial scrapping 
scrapper("http://google.com"); 
+0

あなたの答えは@ブレイクありがとう、残念ながらもう一つ問題があります。あなたは解決策が必要ですが、私はスーパーマーケットのウェブサイトを掻き集めることができます。私が最初にURLを訪れたとき、私は場所を設定して、私が望むスーパーマーケットを選んで、私がそのURLを使用すると、URLを使うたびに場所を設定する必要はなく、次のタグはあなたの場所のページを選択するようにリダイレクトされます...どうすればそれを修正できますか?私は十分に明確になることを願っています。 – rastafalow

+0

私は理解しています。 「あなたの場所を選択」ページの後ろにあるURLを表示したいと思います。たぶん、他のページのフォーマット方法を予測できます。 –