【问题标题】:What is the fastest way to get millions of external titles and descriptions?获取数百万外部标题和描述的最快方法是什么?
【发布时间】:2013-02-17 16:22:51
【问题描述】:

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

我有以下代码,它使用 CURL 从 url 获取 Title 和 Meta:Decription,但我不确定如何最好地利用 php 来尽快完成工作。我想我应该先将 url 导出到文本文件,所以我们将查找保存到数据库,但我不知道如何从那里开始。我有一台专用服务器(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."'

【问题讨论】:

  • 您是否考虑过销售网络抓取即服务的公司?除了每小时获取数万个 URL 之外,获取标题和元标签将是他们可以做的一些最简单的事情。 google.com/search?q=crawling+as+a+service 有一些与此类公司的链接,我希望他们能够做得更快,最终比您自己更便宜。
  • @AlisterBulman 我实际上没有想到这一点,这是个好主意!您是否碰巧知道任何您认为适合这份工作的特定公司?那里有这么多!
  • 我之前使用过 80legs.com 的结果 - 它们列在 Quora 答案上该搜索的第一个结果中。
  • @AlisterBulman 我最终采纳了你的建议!我希望您将您的评论添加为答案,以便我可以接受它作为此问题的答案。

标签: php curl web-scraping


【解决方案1】:

您是否考虑过销售网络抓取即服务的公司?除了每小时获取数万个 URL 之外,获取标题和元标签将是他们可以做的一些最简单的事情。搜索crawling as a service 有一些与此类公司的链接,我希望他们能够做得更快,并且最终比您自己更便宜。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-09
      • 2019-07-12
      • 1970-01-01
      • 2016-02-08
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      相关资源
      最近更新 更多