PHP DOM Parser работает только для некоторых страниц - PullRequest
1 голос
/ 26 февраля 2011

Я использую: http://simplehtmldom.sourceforge.net/ и заметил, что в примерах, пытаясь очистить определенные сайты, только некоторые из них возвращают результаты.

Я использую:

include_once('../../simple_html_dom.php');

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

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

Который показывает несколько миниатюр, но они почти пустые (и не все миниатюры возвращаются).

Это потому, что у них есть какие-то ограничения на доступ к людям?Это происходит для нескольких сайтов.

1 Ответ

1 голос
/ 26 февраля 2011

Вы предполагаете, что $ element-> src всегда относительно $ website, чего не может быть ...

Например: $ element-> src уже может иметь значение http://www.digg.com/image.jpg, поэтому выполните $ website. $ element-> src будет http://www.digg.com/http://www.digg.com/image.jpg, и это не сработает ...

Попробуйте

include_once('../../simple_html_dom.php');

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

// Find all images 
foreach($html->find('img') as $element) {
   //dont want double slashes
   $src = ltrim($element->src, '/');
   //dont want double urls
   $src = str_replace($website, "", $src);

   echo "<img src=\"" . $website . $src . "\"" . '<br>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...