節点削り元気にしたJS +チェリオ
5986 ワード
あなたが私のようなウェブ・スクラリングに新しいならば、可能性はあります、あなたはすでに特定のウェブサイトによって妨げられているか、captchasをバイパスすることができないのを経験しました.
私がブロックされることについて心配することなくウェブページを傷つける簡単な方法を捜して、私は遭遇しましたProxyCrawl クローラーAPIを使用して簡単に提供しています.製品はスムーズに信頼性の高いアマゾンのページをscrapeすることができました.
この記事では、私はどのようにスクレーパーを構築し、私のプロジェクトにクロールAPIを統合する手順を共有したい.この単純なコードは簡単にアマゾンのURLのリストから製品レビューをscrapeし、そのスクラップされたデータをCSVファイルにストレートに書きます.
このノードプロジェクトでは、Proxycrawlのライブラリと、Webスクレーピングで使用されるサーバー用のJQueryツールのようなCherioを使用しました.したがって、実際のコーディングを開始する前に、この作業に必要なすべてをリストします. 私はいくつかの例を提供しているので、URLのリストが必要ですhere . エーProxyCrawl account . 彼らはあなたの最初の1000の要求のための無料のAPIを呼び出すために使用できる無料試用品を持っているので、これは我々のプロジェクトに最適です. The Nodejs library からの
Node Cheerio Library ギタブから 本当に、それです.それで、更なるADOなしで、コードを書き始めましょう.
この時点で、お好みのコードエディターをインストールしているかもしれませんが、そうでない場合は、Visual Studioのコードをインストールすることをお勧めします.
プロジェクトの構成を設定するには、次の手順を実行します. プロジェクトフォルダ名を作成 フォルダの中に、ファイルを作成し、それをスクレーパーの名前.js 完了したら、端末に行き、次の要件をインストールします. 私はproxycrawl NPM iチェリオ パッケージのインストールの後、あなたのAmazonフォルダに移動して、後で私たちのコードによってこすりれるアマゾンURLのリストを含んでいるテキストファイルをペーストしてください.
プロジェクトの構造は次のようになります.
すべてが設定されているので、スクレーパーにコードを書き始めましょう.jsファイル.以下の行はAmazon製品をロードします.txtファイルを配列にします
そのためには、ノードとともにFSモジュールを使用し、WriteStreamという変数を作成します.
ヘッダを追加します.
あなたのスクレーパーを実行するには、単にWindows上でF 5キーを押すか、または端末に入力し、ノードのファイル名
出力例
あなたがこのガイドから何かを学んだことを願っています.ちょっとサインアップしてくださいProxyCrawl あなたのトークンを取得し、ブロックを避けるためにAPIを使用します.
あなたが好きなように、このコードを利用してください😊
私がブロックされることについて心配することなくウェブページを傷つける簡単な方法を捜して、私は遭遇しましたProxyCrawl クローラーAPIを使用して簡単に提供しています.製品はスムーズに信頼性の高いアマゾンのページをscrapeすることができました.
この記事では、私はどのようにスクレーパーを構築し、私のプロジェクトにクロールAPIを統合する手順を共有したい.この単純なコードは簡単にアマゾンのURLのリストから製品レビューをscrapeし、そのスクラップされたデータをCSVファイルにストレートに書きます.
準備
このノードプロジェクトでは、Proxycrawlのライブラリと、Webスクレーピングで使用されるサーバー用のJQueryツールのようなCherioを使用しました.したがって、実際のコーディングを開始する前に、この作業に必要なすべてをリストします.
Node Cheerio Library ギタブから
ノードコーディング
この時点で、お好みのコードエディターをインストールしているかもしれませんが、そうでない場合は、Visual Studioのコードをインストールすることをお勧めします.
プロジェクトの構成を設定するには、次の手順を実行します.
プロジェクトの構造は次のようになります.
すべてが設定されているので、スクレーパーにコードを書き始めましょう.jsファイル.以下の行はAmazon製品をロードします.txtファイルを配列にします
const fs = require('fs');
const file = fs.readFileSync('Amazon-products.txt');
const urls = file.toString().split('\n');
次に、proxycrawlノードライブラリを利用し、クローズAPIをプロジェクトに簡単に統合できます.const { ProxyCrawlAPI } = require('proxycrawl');
以下のコードは、我々のトークンを置くことができる労働者を作ります.ちょうどあなたのproxycrawlアカウントから通常のトークンで値を交換してください.const api = new ProxyCrawlAPI({ token: '_YOUR_TOKEN_' });
その後、我々は現在、APIに各秒10リクエストを行うコードを書くことができます.また、setInterval関数を使用してテキストファイル内のURLをクロールします.const requestsPerSecond = 10;
var currentIndex = 0;
setInterval(() => {
for (let i = 0; i < requestsPerSecond; i++) {
api.get(urls[currentIndex]);
currentIndex++;
}
}, 1000);
この時点で、我々はちょうどURLをロードしている.実際の掻き取りを行うには、ノードチェリオライブラリを使用し、Webページの完全なHTMLコードからレビューを抽出します.const cheerio = require('cheerio');
コードの次の部分は、返されたHTMLを解析する関数です.function parseHtml(html) {
// Load the html in cheerio
const $ = cheerio.load(html);
// Load the reviews
const reviews = $('.review');
reviews.each((i, review) => {
// Find the text children
const textReview = $(review).find('.review-text').text().replace(/\s\s+/g, '')
;
console.log(textReview);
})
}
このコードは使用可能ですが、コンソールで結果をログ出力します.前に行って、代わりにCSVファイルにこれを書くために数行を挿入しましょう.そのためには、ノードとともにFSモジュールを使用し、WriteStreamという変数を作成します.
const fs = require('fs');
const writeStream = fs.createWriteStream('Reviews.csv');
*レビューを覚えています.CSVファイルはあなたのCSVファイルであり、あなたが望むものは何でも名前を付けることができます.ヘッダを追加します.
writeStream.write(`ProductReview \n \n`);
最後に、私たちのコードを私たちのCSVファイルに実際の値を書き込むように指示する必要があります.writeStream.write(`${textReview} \n \n`);
スクレーパーが完成したので、完全なコードは次のようになります.const fs = require('fs');
const { ProxyCrawlAPI } = require('proxycrawl');
const cheerio = require('cheerio');
const writeStream = fs.createWriteStream('Reviews.csv');
//headers
writeStream.write(`ProductReview \n \n`);
const file = fs.readFileSync('Amazon-products.txt');
const urls = file.toString().split('\n');
const api = new ProxyCrawlAPI({ token: '_YOUR_TOKEN_' });
function parseHtml(html) {
// Load the html in cheerio
const $ = cheerio.load(html);
// Load the reviews
const reviews = $('.review');
reviews.each((i, review) => {
// Find the text children
const textReview = $(review).find('.review-text').text().replace(/\s\s+/g, '');
console.log(textReview);
// write the reviews in the csv file
writeStream.write(`${textReview} \n \n`);
})
}
const requestsPerSecond = 10;
var currentIndex = 0;
setInterval(() => {
for (let i = 0; i < requestsPerSecond; i++) {
api.get(urls[currentIndex]).then(response => {
// Make sure the response is success
if (response.statusCode === 200 && response.originalStatus === 200) {
parseHtml(response.body);
} else {
console.log('Failed: ', response.statusCode, response.originalStatus);
}
});
currentIndex++;
}
}, 1000);
結果
あなたのスクレーパーを実行するには、単にWindows上でF 5キーを押すか、または端末に入力し、ノードのファイル名
出力例
あなたがこのガイドから何かを学んだことを願っています.ちょっとサインアップしてくださいProxyCrawl あなたのトークンを取得し、ブロックを避けるためにAPIを使用します.
あなたが好きなように、このコードを利用してください😊
Reference
この問題について(節点削り元気にしたJS +チェリオ), 我々は、より多くの情報をここで見つけました https://dev.to/iankalvin/scraping-on-node-js-cheerio-made-easy-with-proxycrawl-397テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol