可能重复:
如何在 Ruby 中编写网络爬虫?
我需要抓取我的应用程序数据库中列出的许多网站的源代码。我正在检查他们是否链接回我的网站。
是否可以使用 Ruby on Rails,还是应该使用 PHP?
可能重复:
如何在 Ruby 中编写网络爬虫?
我需要抓取我的应用程序数据库中列出的许多网站的源代码。我正在检查他们是否链接回我的网站。
是否可以使用 Ruby on Rails,还是应该使用 PHP?
您可以只获取网站列表,然后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";
}
}
?>
只是一个简单的技巧,但它可以完成工作。
用 ruby 刮擦真的很简单。有很多图书馆,但我发现最好的是机械化(它使用 nokogiri 进行解析)。然而,它对 cookie 很聪明,可以轻松地操作表单,并且具有易于使用/灵活的 API。
此外,如果您不想使用 css 选择器,您可以下载文件并自己解析数据(如查找某些字符或其他字符)。
我广泛使用了 PHP 和 Ruby,我个人更喜欢 Ruby,因为它的代码更优雅,而且您的代码通常更短。话虽如此,如果您是编程新手,那么对于编程经验有限的人来说,PHP 可能会稍微容易一些。
我已经使用 Ruby 和 PHP 来抓取网站。
我真正喜欢 Ruby 的一件事是您可以轻松地使您的抓取成为多线程的。这样,您可以同时运行脚本并抓取 10 - 100 个网站(PHP 使其成为多线程非常痛苦)。
我在 Ruby 中发现了很多很棒的抓取工具,而 PHP 也有其他工具。
我的投票是 Ruby,因为线程易于使用,您可以快速填充数据库并很快发现代码问题,而不必等待 PHP 的时间。
Ruby on Rails 是一个用于构建 Web 应用程序的框架,而不是抓取它们。PHP 是一种通常用于构建网站/应用程序的语言。
两者都可能有网络抓取模块,谷歌会告诉你它们是什么......
这看起来像是一篇关于使用 Ruby 进行抓取的体面的分步帖子:http ://www.andrewsturges.com/2011/09/how-to-harvest-web-data-using-ruby-and.html
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);
?>