0

まず、次の URL を手動で参照します。

負傷者の増加は、ドイツのワールドカップへの道を妨げません

次に、ページのソースを表示して og:image メタ タグを探すと、次のようになります。

<meta property="og:image" content="http://l.yimg.com/bt/api/res/1.2/JjwtkhIEdT9nKxLp8p0LFQ--/YXBwaWQ9eW5ld3M7cT04NTt3PTYwMA--/http://media.zenfs.com/en_us/News/Reuters/2013-10-08T122032Z_1_CBRE9970YAZ00_RTROPTP_2_SOCCER-WORLD.JPG"/>

ただし、同じ URL をプログラムで解析しようとすると、一般的な Yahoo ストック アイコンが表示されます。私が使用しているコードは次のとおりです。

string url = "http://sports.yahoo.com/news/mounting-injuries-wont-stop-germanys-path-world-cup-122032650--sow.html";

WebClient wc = new WebClient();
var doc = new HtmlAgilityPack.HtmlDocument();
string newsPageSource = wc.DownloadString(sourceUri.ToString());
doc.LoadHtml(newsPageSource);
...

(簡潔にするために残りを削除しました)。

ここでデバッグして、ターゲット Web ページのコンテンツを含むnewsPageSource文字列を検査し、og:image タグを探すと、その内容が異なります。

<meta property="og:image" content="http://l.yimg.com/bt/api/res/1.2/81I5U991YW6EEaB2Cjd58g--/YXBwaWQ9eW5ld3M7cT04NTt3PTYwMA--/http://l.yimg.com/os/mit/media/m/social/images/social_default_logo-1481777.png"/>

ここで何が起こっているのかわかりません。手動で閲覧している場合、元の URL はおそらく他の内部 URL にリダイレクトされていると思いますが、プログラムでこれを行う場合、コードはページ ソースの最初の「スナップショット」を取得するだけで、少し長く待ってリダイレクトを実行する必要はありません。誰かがここに光を当てることができますか? または、この場合、Yahoo ストック アイコン (social_default_logo-1481777.png) を取得する代わりに、実際の画像 (2013-10-08T122032Z_1_CBRE9970YAZ00_RTROPTP_2_SOCCER-WORLD.JPG) を抽出するにはどうすればよいでしょうか。

どういうわけか、Facebook と Google+ は、同じリンクを貼り付けたときに正しい画像を抽出するほどスマートです。

ありがとう、アルチル

4

0 に答える 0