使用php从外部URL获取application / ld + json

时间:2019-01-27 12:28:30

标签: php json

从此应用程序/ ld + json我想获取示例1.genre,2.director,3.dateCreated,4.duration,5.uploadDate

 <script type="application/ld+json">{
      "@context": "http://schema.org",
      "@type": "Movie",
      "url": "/title/tt2293640/",
      "name": "Minions",
      "image": "https://m.media-amazon.com/images/M/MV5BMTg2MTMyMzU0M15BMl5BanBnXkFtZTgwOTU3ODk4NTE@._V1_.jpg",
      "genre": [
        "Animation",
        "Action",
        "Adventure",
        "Comedy",
        "Family"
      ],
      "contentRating": "PG",
      "actor": [
        {
          "@type": "Person",
          "url": "/name/nm0000113/",
          "name": "Sandra Bullock"
        },
        {
          "@type": "Person",
          "url": "/name/nm0358316/",
          "name": "Jon Hamm"
        },
        {
          "@type": "Person",
          "url": "/name/nm0000474/",
          "name": "Michael Keaton"
        },
        {
          "@type": "Person",
          "url": "/name/nm1853544/",
          "name": "Pierre Coffin"
        }
      ],
      "director": [
        {
          "@type": "Person",
          "url": "/name/nm0049633/",
          "name": "Kyle Balda"
        },
        {
          "@type": "Person",
          "url": "/name/nm1853544/",
          "name": "Pierre Coffin"
        }
      ],
      "creator": [
        {
          "@type": "Person",
          "url": "/name/nm0528244/",
          "name": "Brian Lynch"
        },
        {
          "@type": "Organization",
          "url": "/company/co0221986/"
        },
        {
          "@type": "Organization",
          "url": "/company/co0005073/"
        }
      ],
      "description": "Minions is a movie starring Sandra Bullock, Jon Hamm, and Michael Keaton. Minions Stuart, Kevin, and Bob are recruited by Scarlet Overkill, a supervillain who, alongside her inventor husband Herb, hatches a plot to take over the...",
      "datePublished": "2015-06-17",
      "keywords": "minion,super villain,villain,invented language,teddy bear",
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingCount": 188589,
        "bestRating": "10.0",
        "worstRating": "1.0",
        "ratingValue": "6.4"
      },
      "review": {
        "@type": "Review",
        "itemReviewed": {
          "@type": "CreativeWork",
          "url": "/title/tt2293640/"
        },
        "author": {
          "@type": "Person",
          "name": "flint1961"
        },
        "dateCreated": "2015-06-27",
        "inLanguage": "English",
        "name": "Below par money spinner",
        "reviewBody": "I don\u0027t usually write reviews but this was such a disappointment that I felt I had to put something. Most of the good jokes were shown in the trailers, so if you\u0027ve seen the trailer then it\u0027s probably not worth the money. There were 3 of us watched this and although we all loved the despicable movies none of us enjoyed this. My son (11) said it felt like it was 2 hours long it was so boring. I can\u0027t really explain why it came across as so poor - but it just seemed really lazy and without Gru to play against the Minnions were just to simple. It was slapstick with no soul. The music although quite good didn\u0027t really seem to fit the film - just seemed to be tacked on at bit were they felt they should have a soundtrack and a famous song. Buy yourself a copy of despicable me and watch it again and again. Much better value for money! This just felt rushed, with loads of stock jokes, maybe hoping enough of them would hit the mark - they didn\u0027t.",
        "reviewRating": {
          "@type": "Rating",
          "worstRating": "1",
          "bestRating": "10",
          "ratingValue": "4"
        }
      },
      "duration": "PT1H31M",
      "trailer": {
        "@type": "VideoObject",
        "name": "Stuart \u0026 Dave",
        "embedUrl": "/video/imdb/vi996454425",
        "thumbnail": {
          "@type": "ImageObject",
          "contentUrl": "https://m.media-amazon.com/images/M/MV5BMTgxMzc2OTQwOV5BMl5BanBnXkFtZTgwODQ2OTgwNjE@._V1_.jpg"
        },
        "thumbnailUrl": "https://m.media-amazon.com/images/M/MV5BMTgxMzc2OTQwOV5BMl5BanBnXkFtZTgwODQ2OTgwNjE@._V1_.jpg",
        "description": "Watch an exclusive video for Minions.",
        "uploadDate": "2015-06-26T17:14:58Z"
      }
    }</script>

使用此代码获取元标记

$c = file_get_contents("https://www.imdb.com/title/$id");
$d = new DomDocument();
$d->loadHTML($c);
$xp = new domxpath($d);
foreach ($xp->query("//meta[@property='og:title']") as $ti) {
    $imdbTitle = $ti->getAttribute("content");
}
foreach ($xp->query("//meta[@property='og:image']") as $im) {
    $imdbImg = $im->getAttribute("content");
}
foreach ($xp->query("//meta[@property='og:description']") as $ode) {
    $imdbDes = $ode->getAttribute("content");
}

我要从此php代码中获取1.genre,2.director,3.dateCreated,4.duration,5.uploadDate(来自JSON)(application / ld + json),我该怎么做?一些帮助谢谢你。

1 个答案:

答案 0 :(得分:1)

您将JSON数据放入HTML页面。 所以你必须 1)仅检索JSON数据 2)解析并处理JSON

ResultSetMetaData resultSetMetaData = rs.getMetaData();
int columnCount = resultSetMetaData.getColumnCount();
System.out.println("Number of columns : " + columnCount);

while (rs.next()) {
    for (int i = 1; i <= columnCount; i++ ) {
      String name = resultSetMetaData.getColumnName(i);
      Object result1 = res.getObject(resultSetMetaData.getColumnLabel(i));
       //Integer result2 = res.getObject(resultSetMetaData.getColumnLabel(i), Integer.class);
    }
}