Получение первой картинки с помощью HTML-парсера - PullRequest
2 голосов
/ 03 июня 2010

(не является носителем английского языка)

Я делаю персональный проект на PHP, в котором я использую Simple HTML Parser , чтобы проанализировать HTML данного URL-адреса и получить первое изображение в DIV, которое имеет определенный идентификатор или класс ( maincontent, content, main, wrapper и т. д. - это все в массиве) и игнорировать рекламу. Цель состоит в том, чтобы взять это изображение и сделать из него миниатюру, почти как на Digg и других.

Я думал, что все работает нормально, пока не попробовал свой сценарий на веб-сайте Snopes ("http://www.snopes.com/photos/animals/luckycoyote.asp" <- точнее, на этой странице). </p>

Источник первого полученного изображения: graphics / luckycoyote1.jpg. До сих пор, чтобы исправить эту проблему, я создал небольшую функцию, которая получает доменное имя по указанному URL и вставляет его перед атрибутом источника IMG. Поэтому для таких сайтов, как Snopes.com, он дает мне следующее: "http://www.snopes.com/graphics/luckycoyote1.jpg" ... в то время как URL real для Snopes для этого изображения равен" http://www.snopes.com*/photos/animals/***graphics/luckycoyote1.jpg" (или, точнее, : "http://**graphics1.snopes.com/photos/animals/graphics/luckycoyote1.jpg" - укажите здесь субдомен).

Итак, мой главный вопрос: как я могу внешне / динамически получить полный URL-адрес изображения («абсолютный путь»), когда мне дан только «относительный путь»? Я почти уверен, что это возможно, поскольку, когда я вставляю ссылку в Facebook, "Что ты делаешь?" поле, например, дает мне правильный путь к изображению, в то время как на веб-сайте источником изображения является только (пример) "image / photo / example.jpg".

Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

Когда вы получаете относительный графический URL-адрес graphics/luckycoyote1.jpg, что означает, что тег src="" НЕ НАЧИНАЕТСЯ с /, вы должны вместо использования имени домена использовать текущий путь вашего просмотра.

Чтобы получить это в PHP, запустите dirname('http://www.snopes.com/photos/animals/luckycoyote.asp'), и он вернет нужный вам путь. Вставьте это перед graphics/luckycoyote1.jpg, и вы получите свое изображение.

graphics1.snopes.com происходит автоматически на сервере, и вам не нужно беспокоиться об этом. Когда изображение src="" начинается с /, используйте вместо этого доменное имя http://www.snopes.com.

0 голосов
/ 03 июня 2010

В вашем случае я предполагаю, что происходит переадресация сервера, и единственный реальный способ - это попытаться сделать веб-запрос для получения изображения, используя «домен по умолчанию», как вы изначально завершили, а затем посмотрите, куда / на что он перенаправляется во время процесса.

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