2016-03-29 4 views
1

tl; dr:Chrome拡張機能でAjax経由でウェブページをスクラップすることを誰かが正しい方向に向けることができますか?私は関連するチュートリアルを取りたいが、どこから始めるべきか分からない。Ajaxを使ってボットと見なす必要はありませんか?

コードに自分自身を教えるための方法として
が、私は私のGoodreads.comブックリスト(が楽天ブックスAPIを使用して)引き、その後、サンに対して検索するためのNode.jsアプリケーションを構築しています==目標== Francisco Public LibraryのOverdriveカタログ(GoodreadsのAPIに含まれていない関数)。私は第2部に挑戦している。

私はChrome拡張機能Available Goodreads(https://github.com/rhollister/goodreads)をガイダンスとして使用しています。先週、私は先週、regexp(frustratingly fun)に関するすべてを学びました。

==問題==
私は、サイトがあることの警告を返しhttp.request(library_search_url)を使用する場合は、「この機能へのアクセスは、ウェブボットのために無効にされました。」拡張コードを見ると、Ajaxをバックグラウンドウィンドウで使用してページを擦っているようです。

私はここにいくつかの研究(例えばNode can't scrape certain pages)に基づいて要求されたが、それは動作しませんでしたどのように私は変更しようとしました
==質問==。急行を学び、私が望むことを達成するためにこれを(http://mherman.org/blog/2013/10/20/handling-ajax-calls-with-node-dot-js-and-express-scraping-craigslist/)する必要がありますか?そうでなければ、私は学ばなければならない他のアプローチがありますか?

(注:私は、コード自体を探していないよ - ちょうど方向なので、私は学ぶために必要なものを学ぶ行くことができます)

ありがとう!

コンテキストの場合、ここで私はこれを考えさせるのコードは、Ajaxベースのスクレイピングされます:

$.ajax({ 
    url: url, 
    success: parseODResults(bookSearchTerms, l, libraryShortName, libraryStr, library.newDesign, searchTerm, url), 
    error: function(request, status, error) { 
     if (sender) { 
     chrome.tabs.sendMessage(sender.tab.id, { 
      type: 'FROM_AG_EXTENSION' + id, 
      error: error 
     }); 
     } 
    }, 
    xhr: function() { 
     return jQuery.ajaxSettings.xhr(); 
    } 
    }); 
+1

apiを使用してください - http://www.goodreads.com/api、彼らのページを掻き回すことは、TOSに反しているようです。 – baao

+0

私の最初の投稿を編集します。この時点では:私は書籍のリストを取得するために良いリーダーAPIを使用しています。 APIが実行できないことは、実際のライブラリのオーバードライブカタログを照会することです。 – Dlince

答えて

1

AJAXは、それを忘れクライアント(つまりブラウザ)のためです。あなたの問題はhttp.request()に設定されていないユーザエージェントに関連している可能性があります。そのため、ウェブサイトは誰が情報を要求しているのかわからず、ウェブボットの問題のリクエストを規制しています。 User-Agentは例や、既存のブラウザのためのFirefoxのUAに設定し、標準のHTTPヘッダとしてあり、それは良いことがあり、例えば:

var options = { 
    hostname: 'goodreads.com/something', 
    method: 'GET', 
    headers: { 
     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586' 
    } 
}; 

しかし、可能な文書化されたAPIがある場合にhtmlページをスクラップする悪い習慣です:http://www.goodreads.com/apiあなたはそのギブスページを脇に置くべきです...

+0

ありがとう@ShanShan!私はそれを試み、何が起こるか見る。 このAPIの課題は、クリティカルビットを実行しないことです。実際に可用性を確認するには、オーバードライブでチェックします。私はGoodreads APIを使って本のリストを取得しています。 – Dlince

関連する問題