PHP 中的网页抓取
2022-08-30 12:23:48
我正在寻找一种方法,从用户在PHP中给出的URL中对另一个页面进行小预览。
我只想检索页面的标题,图像(如网站的徽标)以及一些文本或描述(如果可用)。有没有简单的方法可以在没有任何外部库/类的情况下做到这一点?谢谢
到目前为止,我已经尝试使用DOCDocument类,加载HTML并将其显示在屏幕上,但我不认为这是正确的方法。
我正在寻找一种方法,从用户在PHP中给出的URL中对另一个页面进行小预览。
我只想检索页面的标题,图像(如网站的徽标)以及一些文本或描述(如果可用)。有没有简单的方法可以在没有任何外部库/类的情况下做到这一点?谢谢
到目前为止,我已经尝试使用DOCDocument类,加载HTML并将其显示在屏幕上,但我不认为这是正确的方法。
我建议您为此考虑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;
?>