JavaScript内容何时可以抓取(如果有的话)?

时间:2013-01-10 09:53:46

标签: javascript jquery web-crawler

我希望在我为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的有效脚本所以我找了一个插件或脚本,并找到了this plugin that was and found a plugin called Tweet for jQuery,因为它可以自定义CSS,但这个爬虫是否友好? 什么是可以从可以抓取的脚本中分离出来的脚本?我应该转一下JavaScript来看看自己吗? jQuery内容是否可以抓取,我必须采取哪些操作(假设有)来使我自己的jQuery生成的内容可以抓取?我在网上找到了关于此的混合参考,所以如果你觉得它可以帮助我,请指导我一个值得信赖的资源。

1 个答案:

答案 0 :(得分:2)

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

使爬虫友好的一个解决方案是为他们做一个后备。但这必须涉及在服务器端呈现您的Twitter信息。 Facebook这样做:

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

Facebook在其文档标题中插入此元标记。它仅针对noscript案例(因此,爬虫)触发,并使用给定的URL刷新页面,在facebook的情况下,这意味着“在服务器端渲染墙,dude没有javascript”。当然,抓取工具必须知道如何继续使用此标记。