2016-11-16 1 views
0

htmlメタタグからいくつかのメタデータを抽出したいと思います。次のメタタグは、取得されたhtmlに存在します。cheerio:問題のあるメタプロパティを選択する

<meta property="og:type" content="offer"/> 
<meta property="og:title" content='خانه ذرت با کورن داگ لذیذ و خوشمزه در تهران' /> 

私は両方OGのコンテンツを取得するには、以下のサンプルコードを書かれている:タイプOG:タイトルメタタグからプロパティ:

var request = require('request'); 
var cheerio = require('cheerio'); 

var a='http://someurl/'; 
getDealInfo(a); 


function getDealInfo(url){ 
    var options = { 
     url: encodeURI(url), 
     headers: { 
      'Accept' : '*/*', 
      'Cache-Control':'no-cache', 
     } 
    }; 
    request(options, function(error, response, html){ 
     if (!error && response.statusCode == 200) { 
      var $ = cheerio.load(html); 
      var title = $('meta[property="og:title"]').attr('content'); 
      console.log('title: ' + title); 
      var type = $('meta[property="og:type"]').attr('content'); 
      console.log('type: ' + type); 
     }else console.log('Error accessing Deal:' + response.statusCode + '\n'+error); 
    }); 
} 

私はため正しい内容を取得og:タイプは定義されていませんog:タイトル両方のプロパティがプレゼンテーションされていますがtを取得したhtmlで返します。

私はなぜ私が得ることができないのかを理解するのに役立つことができますog:titleプロパティの内容?

+0

こんにちは、アミール、스택オーバーフローへようこそ!あなたの質問をさらに編集して、正確に何が問題なのかについてもう少し詳細を含めることができますか? – Kezz101

+0

サイトのオーナーの要求に応じてメインURLを変更しました。 – Amir

答えて

0

私はhtml応答がメタog:title

を持っていないことをあなたが使用してこれを見ることができます注意してください。

request(options, function(error, response, html){ 
    fs.writeFile('./index.html', html) 
}) 

しかし、あなたが代わりにneedlehttps://www.npmjs.com/package/needleパッケージを使用することができますrequest

var needle = require('needle') 
var results = [] 
needle.get(encodeURI(url), function(err, res) { 
    if (err) throw err 
    var $ = cheerio.load(res.body) 
    var title = $('meta[property="og:title"]').attr('content') 
    results.push({ 
     title: title 
    }) 
    fs.writeFile('./data.json', JSON.stringify(results)) 
}) 

出力data.jsonファイルにog:title cont出典:

[ 
    { 
     "title": "خانه ذرت با کورن داگ لذیذ و خوشمزه در تهران" 
    } 
] 
+0

ありがとうございます。それは働いている。 – Amir