1

我希望在我正在为 Twitter 时间线开发的网站上实现时间线功能。我拥有的一个选项是可抓取的,并且可以直接在 Twitter 设置下的“小部件:

<a class="twitter-timeline"  href="https://twitter.com/hyttetomter" data-widget-id="289297710840954880">Tweets by @hyttetomter</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

该代码首先不是 XHTML 的有效脚本,因此我寻找了一个插件或脚本,并找到了这个插件,并找到了一个名为 Tweet for jQuery 的插件,因为它可以为 CSS 定制,但是这个爬虫友好吗?将可抓取的脚本与不可抓取的脚本分开的技术是什么?我应该打开 JavaScript 自己看看吗?jQuery 内容是否可以抓取?我必须采取哪些措施(假设有)才能使我自己的任何 jQuery 生成的内容可抓取?我在网上找到了关于这个的混合参考,所以如果你觉得它可以帮助我,请引导我到一个值得信赖的资源。

4

1 回答 1

2

爬虫获取 HTML 页面。这是它们唯一的功能。它们获得了样式表和 javascript 的名称,因为它们是 HTML 文档头部的一部分(作为链接和脚本标签),但它们的目的既不是设置页面样式也不是增强行为。他们获取 HTML 静态信息并进行解析,以便对其内容做出假设。如果您的内容是在 javascript 触发后生成的,那么爬虫将无法获取它。

使其对爬虫友好的一种解决方案是为它们进行后备。但这必须涉及在服务器端呈现您的 twitter 信息。Facebook 这样做:

<noscript>
  <meta http-equiv="refresh" content="0; URL=/home.php?_fb_noscript=1" />
</noscript>

Facebook 在其文档标题中插入此元标记。它仅在没有脚本的情况下触发(因此,爬虫),并使用给定的 url 刷新页面,在 facebook 的情况下,这意味着“在服务器端渲染墙,伙计没有 javascript”。当然,爬虫必须知道如何处理这个标签。

于 2013-01-10T10:15:08.377 回答