Facebook Share按钮 - Scraper无法获取元标记

时间:2012-06-03 12:45:41

标签: facebook share doctype meta-tags scraper

我一直在这个页面上工作 http://www.btselem.org/hebrew/131606

我决定添加Facebook Share按钮,但出于某种原因,每当我尝试共享时,Facebook刮刀都无法获得源代码中的任何元标记 - 它只显示网站的URL。 在facebook开发人员调试工具中检查URL后,我收到了 206响应代码,并出现以下错误:

无法下载 - 无法检索数据表单网址

我还检查了“查看我们的刮刀从您的网址中看到的确切内容”选项,看来刮刀只能设法读出以下内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

奇怪的是,这甚至不是我在页面源中获得的DOCTYPE。 我已经尝试将DOCTYPE更改为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-rdfa-1.dtd">

在我阅读了一些较旧的帖子后说这应该解决问题,但这也不起作用 - 我继续从刮刀中获取同一行。 我会感谢你们有任何提示或想法...

我发布了源代码的第一部分,至少包含了meta标签的部分。如有必要,我会添加整个代码。 提前谢谢,

大卫。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-Transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" xml:lang="he" lang="he" dir="rtl">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>לקסיקון הכיבוש: 67 שניות על... מאחז |בצלם</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta property="fb:app_id" content="142675212478057"/>

<link rel="shortcut icon" href="/sites/all/themes/btselem/images/favicon.ico" type="image/x-icon" />
<meta property="og:site_name" content="בצלם" />
<meta property="og:title" content="מאחז | בצלם" />
<meta property="og:type" content="article" />
<meta property="og:url" content="http://www.btselem.org/hebrew/131606" />
  <link type="text/css" rel="stylesheet" media="all" href="/sites/default/files2/css/css_1458508373fb743060ffb80b43b3d59c.css" />
<link type="text/css" rel="stylesheet" media="print" href="/sites/default/files2/css/css_ff9c22380c0853814b0563da89e16090.css" />

3 个答案:

答案 0 :(得分:2)

当我试图让Facebook Scraper( https://developers.facebook.com/tools/debug)读取我创建的Object Graph文件时,我刚才遇到了这个问题。当我在“&lt; meta property = ...”之前有空格(空格)时,刮刀显示它看到我的meta作为body标签的一部分而不是head标签就是这种情况。当我在meta标签之前移除空白区域时,刮刀可以正确地看到头部中的元标记并且它运行良好。为了好奇,我用标签替换了我之前的4个空格宽度的空白区域,刮刀能够正确地看到内容。很奇怪。希望这有助于某人!

答案 1 :(得分:0)

当我查看生成的文档来源时,在<!DOCTYPE>标记之前会显示一个空白行。

206响应代码通常表示请求者已取消传输。可能是空白行使Facebook解析器混乱而且它只是放弃了。

我没有使用Drupal,但在其他基于PHP的CMS系统中,这通常是因为在关闭?>标记与php文件中的EOF标记之间存在空白。在标题渲染之前调用。 It seems to be agreed尽可能省略这些关闭的php标记是最佳做法。

在您完成编辑所有PHP文件的过程之前,您可以通过复制此页面的源代码并将其保存为服务器上的静态html文件而不使用空格来测试。看看是否会被Facebook调试器解析。如果没有,那么你还有另一个问题。

答案 2 :(得分:0)

您似乎正在尝试将元标记放入<body>标记。

http://developers.facebook.com/tools/debug/og/echo?q=http%3A%2F%2Fwww.btselem.org%2Fhebrew%2F131606

<!DOCTYPE html>
<html>
<body>
<p>UBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;</p>
<meta http-equiv="content-type" content="text/html; charset=utf-8">

这不是格式良好的HTML。解决HTML问题,然后Facebook应该能够正确地打印您的页面。