获得数百万个外部标题和描述的最快方法是什么?

时间:2013-02-17 16:22:51

标签: php curl web-scraping

我有一个包含列URL,标题和描述的Mysql表。有超过六百万行,每个URL列都有一个来自网络的网址。我现在需要为表中的每个URL添加标题和元描述。我通过下载dmoz数据库获得了部分工作,并从那里获得了我可以获得的任何标题和描述,但我仍然有几百万个网址。我知道这将是一个漫长的过程,我正试图找出最快捷的方法。

我有以下代码使用CURL从URL获取Title和Meta:Decription,但我不确定如何利用它最好地利用它来尽快完成工作。我想我应该首先将url导出到文本文件,所以我们将查找保存到db,但我不知道如何从那里开始。我有一个专用于这项工作的专用服务器(E3-1230V2,32 GB),所以功能就在那里,问题是如何最好地使用它......

赞赏任何建议!

这是CURL代码:

function get_info($url)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$html = get_info($url);

$doc = new DOMDocument();
@$doc->loadHTML($html);
$nodes = $doc->getElementsByTagName('title');
$title = $nodes->item(0)->nodeValue;

$metas = $doc->getElementsByTagName('meta');

for ($i = 0; $i < $metas->length; $i++)
{
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'description')
$description = $meta->getAttribute('content');

insert into table SET Title ='".$title."', Description = '".$description."'

2 个答案:

答案 0 :(得分:1)

您是否考虑过销售网络爬行即服务的公司?获取标题和元标记将是他们可以做的一些最简单的事情,除了每小时获取数万个URL。搜索crawling as a service有一些链接到这些公司,我希望他们能够更快地完成,最终比你自己便宜。

答案 1 :(得分:0)

我认为大部分时间都是通过HTTP与远程服务器进行交互而不是本地数据库进行的,因此您可以通过在多个并行运行的进程之间进行工作来加快进程。然后,您需要根据需要运行多个进程以完全利用网络带宽。