0

可能重复:
如何在 Ruby 中编写网络爬虫?

我需要抓取我的应用程序数据库中列出的许多网站的源代码。我正在检查他们是否链接回我的网站。

是否可以使用 Ruby on Rails,还是应该使用 PHP?

4

5 回答 5

3

您可以只获取网站列表,然后curl浏览每个网站。

编辑:或者,你可以试试这个很棒的库,简单的 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,因为它的代码更优雅,而且您的代码通常更短。话虽如此,如果您是编程新手,那么对于编程经验有限的人来说,PHP 可能会稍微容易一些。

于 2012-08-21T05:13:54.933 回答
1

我已经使用 Ruby 和 PHP 来抓取网站。

我真正喜欢 Ruby 的一件事是您可以轻松地使您的抓取成为多线程的。这样,您可以同时运行脚本并抓取 10 - 100 个网站(PHP 使其成为多线程非常痛苦)。

我在 Ruby 中发现了很多很棒的抓取工具,而 PHP 也有其他工具。

我的投票是 Ruby,因为线程易于使用,您可以快速填充数据库并很快发现代码问题,而不必等待 PHP 的时间。

于 2012-08-21T05:13:54.340 回答
0

Ruby on Rails 是一个用于构建 Web 应用程序的框架,而不是抓取它们。PHP 是一种通常用于构建网站/应用程序的语言。

两者都可能有网络抓取模块,谷歌会告诉你它们是什么......

这看起来像是一篇关于使用 Ruby 进行抓取的体面的分步帖子:http ://www.andrewsturges.com/2011/09/how-to-harvest-web-data-using-ruby-and.html

于 2012-08-21T03:08:51.623 回答
0

PHP 将使这非常容易,因为 curl 的使用非常简单: 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 回答