Соскоб в Интернете на PHP - PullRequest
14 голосов
/ 22 марта 2012

Я ищу способ сделать небольшой предварительный просмотр другой страницы с URL-адреса, указанного пользователем в PHP .

Я хочу получить только заголовокстраница, изображение (например, логотип сайта) и немного текста или описание, если оно доступно.Есть ли простой способ сделать это без каких-либо внешних библиотек / классов?Спасибо

До сих пор я пытался использовать класс DOCDocument, загружать HTML и отображать его на экране, но я не думаю, что это правильный способ сделать это

Ответы [ 3 ]

27 голосов
/ 22 марта 2012

Я рекомендую вам рассмотреть 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;
?>
3 голосов
/ 02 ноября 2018

Вы можете использовать любую из этих библиотек.Как вы знаете, у каждого есть свои плюсы и минусы, так что вы можете ознакомиться с заметками о каждом из них или взять время и попробовать его самостоятельно:

  • Guzzle : Независимый HTTP-клиент,поэтому нет необходимости зависеть от cURL, SOAP или REST.
  • Goutte : построено на Guzzle и некоторых компонентах Symfony разработчиком Symfony.
  • hQuery : Быстрый скребок с возможностями кеширования.высокая производительность при обработке больших документов.
  • Запросы : известен своим удобным использованием.
  • Buzz : легкий клиент, идеально подходящий для начинающих.
  • ReactPHP : асинхронный скребок, с подробными уроками и примерами.

Вам лучше проверить их все и использовать всех в наилучшем для них случае.

2 голосов
/ 22 марта 2012

Вы можете использовать для этого SimpleHtmlDom . а затем найдите заголовок и теги img или что еще вам нужно сделать.

...