Given an IMDB movie id, how do I programmatically get its poster image?

前端 未结 17 846
礼貌的吻别
礼貌的吻别 2020-12-08 03:17

movie id tt0438097 can be found at http://www.imdb.com/title/tt0438097/

What\'s the url for its poster image?

17条回答
  •  一个人的身影
    2020-12-08 03:41

    Here is my program to generate human readable html summary page for movie companies found on imdb page. Change the initial url to your liking and it generates a html file where you can see title, summary, score and thumbnail.

    npm install -g phantomjs
    

    Here is the script, save it to 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 += '
    '; section += '

    '+movie.title+'

    '; section += '

    '+movie.summary+'

    '; section += '

    '+movie.rating+'

    '; section += ''; section += '
    '; content.push(section); }); var html = ''+content.join('\n')+''; fs.write(path, html, 'w'); }

    And run it like so

    phantomjs imdb.js
    

提交回复
热议问题