0

重複の可能性:
Ruby で Web スクレイパーを作成するにはどうすればよいですか?

アプリのデータベースにリストされている多くの Web サイトのソース コードをスクレイピングする必要があります。彼らが私のサイトにリンクしているかどうかを確認しています。

Ruby on Rails を使用することは可能ですか、それとも PHP を使用する必要がありますか?

4

5 に答える 5

3

Web サイトのリストを取得して、curlそれぞれを実行することができます。

編集: または、この素晴らしい lib、シンプルな dom パーサー (http://simplehtmldom.sourceforge.net) を試すこともできます。

<?php

require 'simple_html_dom.php';

define(MYWEBSITE, "google.com");
$html = file_get_html('http://www.google.com/');

foreach($html->find('a') as $link) {
  $url =  $link->href;
  if (!strpos($url, MYWEBSITE)) {
    // Do whatever you need to do here, we'll just simply echo out
    // the website URL that has your site URL in it.
    echo $url . " contains " . MYWEBSITE ."\n";
  }
}

?>

単純なハックですが、機能します。

于 2012-08-21T03:25:25.313 に答える
2

ruby でスクレイピングするのは本当に簡単です..多くのライブラリがありますが、私は機械化(解析に nokogiri を使用) が最適であることを発見しました。ただし、Cookie についてはスマートで、フォームを簡単に操作でき、使いやすく柔軟な API を備えています。

また、css セレクターなどを使用したくない場合は、ファイルをダウンロードして自分でデータを解析できます (特定の文字などを探す場合など)。

私は PHP と Ruby の両方を広範囲に使用してきましたが、個人的には Ruby の方がコーディングがはるかに洗練されており、通常はコードが短いため、Ruby を好みます。そうは言っても、プログラミングに慣れていない場合、プログラミング経験が限られている人にとっては PHP の方が少し簡単かもしれません。

于 2012-08-21T05:13:54.933 に答える
1

Ruby と PHP の両方を使用してサイトをスクレイピングしました。

Ruby で私が本当に気に入っていることの 1 つは、スクレイピングを簡単にマルチスレッド化できることです。このようにして、スクリプトを実行し、同時に 10 ~ 100 の Web サイトをスクレイピングします (PHP をマルチスレッド化するのは非常に面倒です)。

Rubyにはスクレイピング用の優れたツールがたくさんあり、PHPには他にもたくさんのツールがあります。

私の投票は Ruby です。なぜなら、PHP で何年も待たされるのではなく、データベースにすばやくデータを入力し、コードの問題をすばやく見つけることができるスレッド化の容易さからです。

于 2012-08-21T05:13:54.340 に答える
0

curl の使用法は非常に簡単なので、PHP はこれを非常に簡単にします: http://www.php.net/manual/en/function.curl-exec.php

また、すでに高度な使用法をサポートしているライブラリがいくつかあります:
http://simplehtmldom.sourceforge.net/
http://electrokami.com/coding/simple-html-dom-baked-cakephp-component/

<?php
$mySite = "http://www.mysite.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER , true);

// grab URL and save data into variable
$response = curl_exec($ch);
if(stripos($response,$mySite) !== false){
    echo "site still linked";   
}

// close cURL resource
curl_close($ch);
?>
于 2012-08-21T05:09:59.027 に答える
0

Ruby on Rails は、Web アプリケーションをスクレイピングするのではなく、構築するためのフレームワークです。PHP は、通常、Web サイト/アプリケーションの構築に使用される言語です。

両方に Web スクレイピング モジュールが存在する可能性が高く、Google がそれらが何であるかを説明します...

これは、Ruby を使用したスクレイピングに関する適切な段階的な投稿のように見えます: http://www.andrewsturges.com/2011/09/how-to-harvest-web-data-using-ruby-and.html

于 2012-08-21T03:08:51.623 に答える