19

映画 ID tt0438097 は、http://www.imdb.com/title/tt0438097/で見つけることができます。

ポスター画像のURLは?

4

17 に答える 17

17
于 2011-04-12T05:19:07.777 に答える
10

最善の解決策はtmdb.orgを使用することです:

  1. 次の後に、この API URL で imdbid を使用しますfind/

    https://api.themoviedb.org/3/find/tt0111161?api_key=__YOURAPIKEY__&external_source=imdb_id

  2. json 応答を取得し、poster_path属性を選択します。

    例えば"poster_path":"/9O7gLzmreU0nGkIB6K3BsJbzvNv.jpg"

  3. このパスの先頭に を追加"http://image.tmdb.org/t/p/w150"すると、img タグで使用できるポスターの URL が得られます :-)


omdbapi は機能しますが、実際にはこれらの画像を使用できないことがわかりました (スクリーン スクレイピングが原因で、img タグで使用するといずれにせよブロックされます) 。

于 2015-02-23T16:04:25.143 に答える
9

ご存じのとおり、その画像の実際の URL は次のとおりです。

http://ia.media-imdb.com/images/M/MV5BMTI0MDcxMzE3OF5BMl5BanBnXkFtZTcwODc3OTYzMQ@@._V1._SX100_SY133_.jpg

ただし、それがどのように生成されるかを理解するのは難しいでしょう。公開されている API はないようです。

スクリーンスクレイピングはおそらく最善の策です。

写真は通常、 class=photoの div 内にあるようでタグの名前はposterです。

画像自体はaタグのすぐ内側にあります。

于 2008-09-30T00:17:50.153 に答える
5

手遅れであることはわかっていますが、私のプロジェクトではこれを使用しました:-

  1. omdbapi を使用します。Inception の例を見てみましょう。www.omdbapi.com/?t=inceptionを使用すると、json オブジェクトが返されます。
  2. そのjsonオブジェクトで「Poster」オブジェクトを取得します。これには、画像のポスターが含まれています。
于 2014-04-12T12:17:22.847 に答える
5

私が知る限り、URL はランダムな文字列です。

今でも簡単に回収できます。imgという名前のアンカー内でのみposterです。

ですから、ソースを読んでいる場合は、単に検索する<a name="poster"と、そこから最初に続くテキストになりますsrc="

ただし、スクリーン スクレイピング コードは変更される可能性があるため、更新しておく必要があります。


また、画像は著作権で保護されていることにも注意する必要があります。そのため、適切な「公正使用」の根拠の下でのみ画像を使用するように注意してください。

于 2008-09-30T00:16:42.230 に答える
5

親指で十分な場合は、Facebook Graph API を使用できます: http://graph.facebook.com/?ids=http://www.imdb.com/title/tt0438097/

サムネイルを取得します: http://profile.ak.fbcdn.net/hprofile-ak-ash2/50289_117058658320339_650214_s.jpg

于 2012-07-07T10:11:34.193 に答える
1

Trakt API を使用できます。imdb ID を使用して検索要求を行う必要があります。Trakt API によって提供される Json の結果には、その映画の 2 つの画像 (ポスターとファン アート) へのリンクが含まれています http://trakt.tv/api- docs/search-movies

于 2013-11-02T18:18:29.887 に答える
1

サービス利用規約ではスクリーンスクレイピングが明示的に禁止されていることに注意してください。IMDB データベースは一連のテキスト ファイルとしてダウンロードできますが、私が理解しているように、IMDB ムービー ID はこれらのテキスト ファイルのどこにもありません。

于 2010-06-12T19:14:30.650 に答える
1

私はphantomjsとwgetを使って似たようなことをしました。この phantomjs のビットは、検索クエリを受け入れ、最初の結果の映画ポスターの URL を返します。必要に応じて簡単に変更できます。

var system = require('system');

if (system.args.length === 1) {
  console.log('Usage: moviePoster.js <movie name>');
  phantom.exit();
}

var formattedTitle = encodeURIComponent(system.args[1]).replace(/%20/g, "+");
var page = require('webpage').create();
page.open('http://m.imdb.com/find?q=' + formattedTitle, function() {
  var url = page.evaluate(function() {
    return 'http://www.imdb.com' + $(".title").first().find('a').attr('href');
  });
  page.close();
  page = require('webpage').create();
  page.open(url, function() {
    var url = page.evaluate(function() {
      return 'http://www.imdb.com' + $("#img_primary").find('a').attr('href');
    });
    page.close();
    page = require('webpage').create();
    page.open(url, function() {
      var url = page.evaluate(function() {
        return $(".photo").first().find('img').attr('src');
      });
      console.log(url);
      page.close();
      phantom.exit();
    });
  });
});

このbashスクリプトを使用して、ディレクトリ内の多くの映画のwgetを使用して画像をダウンロードします。mp4 ファイルには IMDB が好む名前が付けられているため、最初の検索結果が正しいことがほぼ保証されます。「Love Exposure (2008).mp4」のような名前。

for file in *.mp4; do
  title="${file%.mp4}"
  if [ ! -f "${title}.jpg" ] 
    then
      wget `phantomjs moviePoster.js "$title"` -O "${title}.jpg"
  fi
done

次に、minidlna はサムネイル データベースを構築するときに映画ポスターを使用します。これは、ビデオ ファイルと同じ名前を持っているためです。

于 2014-11-29T20:35:06.150 に答える
0

これらのポスター画像はタイトル ページとの相関関係がないように見えるため、最初にタイトル ページを取得してから、ページの img 要素を取得する必要があります。良いニュースは、img タグが name="poster" の a タグでラップされていることです。使用しているツールの種類については言及されていませんが、これは基本的に画面のスクレイピング操作です。

于 2008-09-30T00:21:03.983 に答える
0

これは、imdb ページで見つかった映画会社の人間が読める HTML 要約ページを生成する私のプログラムです。最初の URL を好みに変更すると、タイトル、概要、スコア、サムネイルを表示できる html ファイルが生成されます。

npm install -g phantomjs

スクリプトは次のとおりです。imdb.js に保存します。

var system = require('system');

var page = require('webpage').create();
page.open('http://www.imdb.com/company/co0026841/?ref_=fn_al_co_1', function() {
  console.log('Fetching movies list');
  var movies = page.evaluate(function() {
    var list = $('ol li');
    var json = []
    $.each(list, function(index, listItem) {
      var link = $(listItem).find('a');
      json.push({link: 'http://www.imdb.com' + link.attr('href')});
    });
    return json;
  });
  page.close();

  console.log('Found ' + movies.length + ' movies');

  fetchMovies(movies, 0);
});

function fetchMovies(movies, index) {
  if (index == movies.length) {
    console.log('Done');

    console.log('Generating HTML');
    genHtml(movies);

    phantom.exit();
    return;
  }
  var movie = movies[index];

  console.log('Requesting data for '+ movie.link);

  var page = require('webpage').create();
  page.open(movie.link, function() {
    console.log('Fetching data');
    var data = page.evaluate(function() {
      var title = $('.title_wrapper h1').text().trim();
      var summary = $('.summary_text').text().trim();
      var rating = $('.ratingValue strong').attr('title');
      var thumb = $('.poster img').attr('src');

      if (title == undefined || thumb == undefined) {
        return null;
      }
      return { title: title, summary: summary, rating: rating, thumb: thumb };
    });

    if (data != null) {
      movie.title = data.title;
      movie.summary = data.summary;
      movie.rating = data.rating;
      movie.thumb = data.thumb;
      console.log(movie.title)
      console.log('Request complete');
    } else {
      movies.slice(index, 1);
      index -= 1;
      console.log('No data found');
    }
    page.close();
    fetchMovies(movies, index + 1);
  });
}

function genHtml(movies) {
  var fs = require('fs');

  var path = 'movies.html';
  var content = Array();

  movies.forEach(function(movie) {
    var section = '';

    section += '<div>';
    section += '<h3>'+movie.title+'</h3>';
    section += '<p>'+movie.summary+'</p>';
    section += '<p>'+movie.rating+'</p>';
    section += '<img src="'+movie.thumb+'">';
    section += '</div>';

    content.push(section);
  });

  var html = '<html>'+content.join('\n')+'</html>';

  fs.write(path, html, 'w');
}

そして、そのように実行します

phantomjs imdb.js
于 2017-04-04T02:32:34.977 に答える
-3

現在、すべての最新のブラウザには「検査」セクションがあります。

Google Chromeに対してのみ100%正しい:

  1. 画像にカーソルを合わせます。
  2. それを右クリックし、「要素の検査」を選択します。
  3. ウィンドウが表示され、 [要素]タブの下に、強調表示されたテキストが次のように表示されます。
  4. それをクリックするだけです。
  5. [リソース]タブで、画像を右クリックします。
  6. 画像のURLをコピー」オプションを選択します。

任意のブラウザのURLとして任意の場所に貼り付けてみてください。画像のみが表示されます。

于 2012-07-07T10:46:44.143 に答える