如何从像Digg的提交按钮这样的URL中获取其他网站信息?

时间:2010-10-15 04:09:48

标签: php javascript ajax cakephp

我正在使用cakePHP框架创建一个网站,我和php以及网络编程的新手。我想做一些类似于Digg的提交按钮的东西,在那里你输入一个网址,它会在网页上提取图像,标题,有时还会对文章进行简短的描述。我假设这将使用PHP完成,但我对任何方法都持开放态度。

3 个答案:

答案 0 :(得分:0)

您获取相关页面的来源(cURL库或file_get_contents()如果启用了fopen() URL包装器)并解析它们以获取这些详细信息。

标题可以title元素。

描述可以是元描述。

图像可以是最大的图像(有很多不同的查找方式)。

您还可以查找The Open Graph Protocol ...

<meta name="og:site_name" content="Stack Overflow" />
<meta name="og:url" content="http://www.stackoverflow.com/" />
<meta name="og:title" content="Hello" />
<meta name="og:image" content="http://www.gravatar.com/avatar/5a9f58455ea36c880bc46820255fb084?s=32&d=identicon&r=PG" />

答案 1 :(得分:0)

我对蛋糕PHP不太熟悉,但我可以大致了解你需要做什么。

第一步是使用AJAX将URL提交给您的服务器。

然后,服务器需要获取html源代码。在php中你可以这样做:

$source = file_get_contents('http://www.example.com/')

可能还有其他功能,但应该可以使用。

获得源后,您将需要解析所需的数据。您可以使用正则表达式或其他内容来完成此部分。

然后,你可能想要设置一个php数组所需的数据,使用

json_encode($my_array)

并返回json。然后,用它做你想做的事。

希望这有帮助

答案 2 :(得分:0)

你需要做一些简单的事情:

  1. 您需要使用PHP的curl函数来获取网页的来源。 php.net网站provides a great example of this

  2. 从该来源,您需要找到页面的标题和任何图像。最简单的方法可能是通过一个简单的正则表达式。

  3. 这是一个简单的脚本示例,它同时执行这两个操作:

    <?php 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "stackoverflow.com"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    $output = curl_exec($ch); 
    curl_close($ch);
    
    $titles = array();
    preg_match_all("/<title>(.*)<\/title>/im", $output, &$titles, PREG_PATTERN_ORDER);
    
    $images = array();
    preg_match_all("/<img *src= *['\"](.*)['\"](.*)\/*>/iU", $output, &$images, PREG_PATTERN_ORDER);
    
    $page_title = $titles[1][0];
    $images_found = $images[1];
    
    echo "Page title was: {$page_title}\n";
    foreach($images_found as $image_src) echo "Image: {$image_src}\n";
    ?>
    

    我包含的正则表达式不完美,并不会在每种情况下捕获所有标题或所有图像,但它们都是良好的开端。

    您还需要从数组$ images中选择要使用的图像。您可以随机执行此操作,也可以根据页面上的最大图像或您找到的第一个图像等执行此操作。