7

Websockets 経由でデータを受信し、それを javascript/jquery 経由でページにレンダリングするサイトをスクレイピングするように依頼されました。仲介者 (DOM) をバイパスして、ソケット経由で送信されるデータを消費/スクレイピングすることは可能ですか? これは、phantomJS のようなヘッドレス Webkit で可能でしょうか? ターゲット サイトはsocket.ioを使用しています。

データを消費し、データ内のキーワードに基づいてアラートをトリガーする必要があります。私はGoutteライブラリを検討しており、PHP でスクレーパーを構築する予定です。

4

2 に答える 2

6

Socket.io は、websockets とまったく同じではありません。彼らがsocket.ioを使用していることを知っているので、私はそれに焦点を当てています。このソケットをスクレイピングする最も簡単な方法は、socket.io クライアントを使用することです。

これをあなたのページに入れます:

<script src="https://github.com/LearnBoost/socket.io-client/blob/0.9/dist/socket.io.js"></script>
<script src="scraper.js"></script>

ファイル Scraper.js を作成します。

var keywords = /foo|bar/ig;
var socket = io.connect('http://host-to-scrape:portnumber/path');
socket.on('<socket.io-eventname>', function (data) {
  // The scraped data is in 'data', do whatever you want with it
  console.log(data);

  // Assuming data.body contains a string containing keywords:
  if(keywords.test(data.body)) callOtherFunction(data.body);

  // Talk back:
  // socket.emit('eventname', { my: 'data' });
});

2014 年 6 月 1 日更新

これをサーバーで実行する代わりに、以下で参照した StackOverflow の質問を見ると、ブラウザ ウィンドウでこれを実行しようとしているように見えます。そのため、NodeJS は必要ないため、NodeJS に関するすべてを削除しました。

于 2013-11-12T09:04:20.440 に答える