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);
...

(我已经删除了其余的简洁)。

如果我在这里调试并检查包含目标网页内容的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,但是当以编程方式执行此操作时,代码只是抓取页面源的第一个“快照”,而无需等待更长的时间并执行任何重定向。任何人都可以在这里阐明吗?或者更好的是,在这种情况下,我将如何提取真实图像 (2013-10-08T122032Z_1_CBRE9970YAZ00_RTROPTP_2_SOCCER-WORLD.JPG) 而不是获取 Yahoo 股票图标 (social_default_logo-1481777.png)。

不知何故,当我粘贴相同的链接时,Facebook 和 Google+ 足够聪明,可以提取正确的图像。

谢谢, 阿基尔

4

0 回答 0