gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:57:12 25 4
gpt4 key购买 nike

从此 application/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 代码中,我想从 JSON (application/ld+json) 获取 1.genre、2.director、3.dateCreated、4.duration、5.uploadDate 我该怎么做?一些帮助,谢谢。

最佳答案

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

$id = 'tt0159365' ; // example id
$c = file_get_contents("https://www.imdb.com/title/$id");

// retrieve the JSON data
$d = new DomDocument();
@$d->loadHTML($c);

// parse the HTML to retrieve the "ld+json" only
$xp = new domxpath($d);
$jsonScripts = $xp->query( '//script[@type="application/ld+json"]' );
$json = trim( $jsonScripts->item(0)->nodeValue ); // get the first script only (it should be unique anyway)

// decode the JSON string we find into a associative array
$data = json_decode( $json, true );

// you can now use this array to query the data you want
$duration = $data['duration'];
echo "Duration: $duration" ;

$director = $data['director']['name'] ;
echo "Director : $director" ;

关于php - 使用 php 从外部 url 获取 application/ld+json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54388118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com