一尘不染

PHP中的Web抓取

php

我正在寻找一种方法,可以根据用户在PHP中提供的URL对另一个页面进行小的预览。

我只想检索页面标题,图像(如网站徽标)以及一些文字或说明(如果有)。有没有任何外部库/类的简单方法?谢谢

到目前为止,我已经尝试过使用DOCDocument类,加载HTML并将其显示在屏幕上,但是我认为这不是正确的方法


阅读 255

收藏
2020-05-29

共1个答案

一尘不染

我建议您考虑为此使用simple_html_dom。这将使其非常容易。

这是一个如何提取标题和第一张图片的有效示例。

<?php
require 'simple_html_dom.php';

$html = file_get_html('http://www.google.com/');
$title = $html->find('title', 0);
$image = $html->find('img', 0);

echo $title->plaintext."<br>\n";
echo $image->src;
?>

这是第二个示例,无需外部库即可执行相同操作。我应该注意,在HTML上使用正则表达式不是一个好主意。

<?php
$data = file_get_contents('http://www.google.com/');

preg_match('/<title>([^<]+)<\/title>/i', $data, $matches);
$title = $matches[1];

preg_match('/<img[^>]*src=[\'"]([^\'"]+)[\'"][^>]*>/i', $data, $matches);
$img = $matches[1];

echo $title."<br>\n";
echo $img;
?>
2020-05-29