PHP-Получить контент со страницы - PullRequest
1 голос
/ 17 июля 2009

Я бы хотел получить содержимое страницы и переформатировать его по своему вкусу ...

Например:

  • Перейти на example.com
  • Получить содержимое в тегах с классом "x"
  • Передать содержимое в определенные переменные
  • Выкладывайте контент в какой-то красивой форме .. массив, CSV, XML ...

Не слишком сложно, верно? Я нуб PHP! :)

Ответы [ 3 ]

2 голосов
/ 17 июля 2009

Попробуйте использовать PHP Простой HTML DOM Parser .

Вы можете делать хорошие вещи, как это:

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
       echo $element->src . '<br>';

// Find all links with class=x
foreach($html->find('a[class=x]') as $element)
       echo $element->href . '<br>'; 
1 голос
/ 17 июля 2009

Для получения данных существует три уровня сложности:

file_get_contents($url); //easy

К сожалению, многие сайты не очень чувствительны к правильному пользовательскому агенту. У вас есть два варианта здесь. Один немного сложнее, чем другой. Промежуточное звено Zend HTTP-клиент

$client = Zend_Http_Client(); //make sure to include Zend_Http, etc.
$client->setConfig($params); // params will include proper user agent
$client->setUri($aUrl);
$html = $client->request()->getBody();

Вариант третий, который вы, возможно, даже не захотите рассматривать, если только вы действительно не хотите, чтобы он был более скриптовым, чем объектно-ориентированный, - это изучение функциональности cURL в PHP

Существует несколько встроенных в PHP способов доступа к данным HTML через объект DOM, но мой любимый - Simple HTML DOM Parser . Это очень похоже на навигацию по DOM в стиле jQuery / CSS.

$domObject = new Simple_HTML_Dom($html);
foreach ($domobject->find('div#theDataYouWant p') as $sentence)
{
    echo "<h3>{$sentence}</h3>";
}
0 голосов
/ 17 июля 2009

XSD может помочь вам. Я также рассмотрел бы wget + CSS ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...