Pobieranie odpowiedniego atrybutu img

0

I doszedłem do takiego problemu. Pobieram elementy ze strony www tytuł, jakis tekst i zatrzymałem się na obrazku. Jak pobrać obrazek mając coś takiego:?


$pobrana_strona = file_get_contents('http://jakas_strona.pl');
/*
Na tej stronie 'http://jakas_strona.pl'--->
(...)
<a  href="http://jakiobrazek.jpg" id="obrazek">
<img src="http://miniaturka-tego-jakiegos-obrazka.jpg" alt="tytul" title="tytul">
</a>
(..)
<-------
*/

Próbowałem pobrać przez coś takiego

$imgs = $dom->getElementsByTagName('img');

$i = 0;
 
while($table = $imgs->item($i++))
{
    foreach($table->attributes as $attr)
    {
        echo $attr->name . " " . $attr->value . "<br />";
    }
}

Ale kompletnie na moim przykładzie się to nie sprawdza ; ( bo pobiera mi tych linków do obrazka chyba 100 a ja potrzebuje ten konkretny co wyżej i najlepiej miniaturkę.
Nie mam pomysłu i się zastanawiam czy przez jquery tego jakoś nie zrobić. Tylko nie wiem jak tam postępować z pobrana stroną w zmiennej php.

Potrzebuje również na dobrą sprawę pobrać ten obrazek na swój serwer i fajnie było by go wyświetlić zanim zaakceptuje zapisanie go na serwer. Z tym sobie jednak powinienem poradzić najważniejsze by mieć ten link do obrazka.

EDIT: Myślę że to będzie bardzo ważne id < a > jest tam indywidulane że tak powiem : )

0

Możesz to zrobić w PHP używając tej biblioteki.

Przykład:

require('simple_html_dom.php'); //dodajesz bibliotekę do pliku
$page = file_get_html('link_do_twojej_strony');
$img =  $page->find('img[title]')->content; //szuka znacznika img z atrybutem title
echo "<img src="{$img}" />;

Pamiętaj że jak masz kila/set obrazków na stronie to musisz je czymś odróżniać. Jeżeli to jest twoja strona to możesz do każdego dodać id i wyciągać je po identyfikatorze.

0

Robisz na ślepo. Zgadujesz zamiast szukać dokładniej. Minuta z wujkiem google: http://simplehtmldom.sourceforge.net/. Na podstawie tego powinieneś sobie poradzić

PS:

$imgs = $dom->getElementsByTagName('img');

Masz jakąś magiczną bibliotekę, czy mieszasz kod PHP z JavaScript? (:O)</del>
EDIT:
Autor tego postu przeprowadził samobiczowanie za brak samodoinformowania się przed napisaniem tego posta.

0

@Sarrus Nie na ślepo : )

$dom = new DOMDocument();
$dom->loadHTML($pobrana_strona);

Za chwilkę wypróbuje wasze propozycję i dam znać.

0

@Trebuh a więc tak ok tylko że to nie moja strona i troszkę ciężko będzie po atrybucie title. Spróbuje znaleźć analogie tytułu tego zdjęcia. Nie można jakoś inaczej? Na pewno te id wyżej atrybutu a ma zawsze stałe id.

0

Co ja robię tutaj źle : (?

$pobrana_strona = file_get_contents('http://strona.pl');
$imgq =  $pobrana_strona->find('a[id=jakiesid]')->find('img')->content;
echo '<img src='.$imgq.' />';
1
tymek42 napisał(a):

Co ja robię tutaj źle : (?

$pobrana_strona = file_get_contents('http://strona.pl');
$imgq =  $pobrana_strona->find('a[id=jakiesid]')->find('img')->content;
echo '<img src='.$imgq.' />';

Jeżeli używasz tej biblioteki którą podałem Ci wcześniej to źle jest:

  1. file_get_contents zamień na
file_get_html('http://www.strona.pl/');
$imgq =  $pobrana_strona->find('a[id=jakiesid]')->find('img')->content;

zamień na $imgq = $pobrana_strona->find('a[id=jakiesid] img')->content;

 i powinno być dobrze.
0

Podsumowując ten watek, problem stanął na:

mam cioś takiego:

<a  class =" image img_mini"><img src="jakis link" alt="" title=""></a>

i teraz jak się połączyć przez tą funkcję find? W jquery jest to prostsze ; /

Bo np to nie działa

$imgs =  $pobrana_stron->find('a, .img_mini img')->content;

lub

$imgs =  $pobrana_stron->find('a.img_mini img')->content;

czy to

$imgs =  $pobrana_stron->find('a.img_mini, img')->content;
0

Sprawdziłem na:

// Find all links 
foreach($html->find('a') as $element) 
       echo $element->href . '<br>';

tam wszystko jest ok

0

Poszło tak!

foreach($pobrana_stron->find('a.image img') as $element) 
       echo $element->src . '<br>';

1 użytkowników online, w tym zalogowanych: 0, gości: 1