webForumDet fria alternativet

Hämta info från hemsida!!?

PHP

6 svar · 798 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#1

Jag undrar om någon kan hjälpa mig med ett litet skript som hämtar information från IMDB (t.e.x titel,bild,kategori), och sedan sparar informationen i en databas som jag har skapat.

Då jag fortfarande inte har så bra koll på php/mysql, så kan det låta lite invecklat när jag förklarar. :r

Tack på förhand och god fortsättning...

Medlem sedan jan. 2005110 inlägg
#2

Tror det är nåt sånthär du menar? Dock är det rätt vanskligt att göra på detta viset, eftersom IMDB's sidkod antagligen inte kommer se likadan ut för alltid. Dessutom förstör minsta lilla avvikelse (t.ex. ett mellanslag här eller där) koden. Men det är en grund att bygga vidare på, sen får du helt enkelt lägga in lite felkontroller och hålla koll på resultatet.

<?
    $url = 'http://www.imdb.com/title/tt0179116/';
    
    $str = file_get_contents( $url );
    
    $s = strpos($str, 'class="title">') + 14;
    $e = strpos($str, '<small>', $s);
    $title = trim( substr($str, $s, $e-$s ) );

    $s = strpos($str, 'class="ch">Genre:</b>') + 21;
    $e = strpos($str, '<br><br>', $s);
    $genre_str = trim( str_replace( '(more)', '', strip_tags(substr($str, $s, $e-$s )) ) );
    $genres = explode( ' / ', $genre_str );

    $s = strpos($str, '<img border="0" alt="cover" src="') + 33;
    $e = strpos($str, '"', $s);
    $img_url = trim( substr($str, $s, $e-$s ) );

    print 'Title: ' . $title . '<br>';
    print 'Genres: ' . implode(', ', $genres) . '<br>';
    print '<img src="imdbimg.php?url=' . urlencode($img_url) . '">';
?>

Notera att vi inte bara kan ta SRC-attributet på bilden och använda direkt - IMDB har varit smarta nog att inte tillåta främmande sidor att hämta deras bilder. Men det går att lösa genom att vi istället skapar ett skript som "låtsas vara en bild". Kan vara lite svårt att förstå i början, men du fattar nog :)

imdbimg.php

<?
    header('content-type: image/jpeg');
    print isset($_GET['url']) ? file_get_contents( urldecode($_GET['url']) ) : '';
?>

Bara att börja testa! Lycka till!

Medlem sedan juli 20041 271 inlägg
#3

Ok, tack...
Ska genast testa detta. ;)

Men jag skulle också gärna vilja veta hur jag sparar infon i en databas.

Medlem sedan juni 20034 013 inlägg
Medlem sedan juli 20041 271 inlägg
#5

tydal skrev:

http://www.tydal.nu/article/76

Jag VET redan hur jag skapar och sparar info i databaser. ;)

Det jag undrar, är om det finns ett enkelt sätt att spara alla info direkt/automatiskt i databasen efter den har hämtat all nödvändig info från IMDB.com?
(Lite svårt att förklara.)

Medlem sedan sep. 2001163 inlägg
#6

Det verkar intressant!

Jag har har en medlemssida där jag vill kolla upp att blivande medlemmar är "godkända" att bli medlemmar.

Alla medlemmar har en sida (som inte jag styr över) som heter:

http://www.huvudsidan.com/joinHere.do?ownerClientId=[B]12345[/B]

I sidkoden hittar jag en annan uppgift som jag vill plocka ut:

<input type="hidden" name="{actionForm.Name}" value="abcde"/>

Är det enkelt att få ut?
det behöver alltså inte sparas i någon databas, bara visas på en sida.

.

Medlem sedan sep. 2001163 inlägg
#7

evesve skrev:

Det verkar intressant!
Jag har har en medlemssida där jag vill kolla upp att blivande medlemmar är "godkända" att bli medlemmar.
Alla medlemmar har en sida (som inte jag styr över) som heter:

http://www.huvudsidan.com/joinHere.do?ownerClientId=[B]12345[/B]

I sidkoden hittar jag en annan uppgift som jag vill plocka ut:

<input type="hidden" name="{actionForm.Name}" value="[B][red]abcde[/red][/B]"/>

Är det enkelt att få ut?
det behöver alltså inte sparas i någon databas, bara visas på en sida.
.

Ingen som har en bra kod för detta?

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)