2011-07-02 71 views
0

我有一个网站,我想从中拉取数据,它真的停留在石器时代。没有Web服务,没有API,它非常基于ASP/Session /基于表格的布局页面。很好看。我该如何使用js/coffee来屏蔽一个asp页面?

我想只是屏幕刮,并使用js(coffeescript)来自动化。我想知道这是否可能。我可以用C#和linqpad做到这一点,但我坚持用正则表达式解析表(和子表和子表)。另外,如果我用js或coffeescript来做,我会更加适应这些语言,我将能够使用jQuery将元素从DOM中提取出来。

我在这里看到两种可能性:

  • 使用C#和发现,将做的事情像jQuery但在C#代码库
  • 使用的CoffeeScript(JS),并使用jQuery发现我”的元素我在页面寻找

我也想自动化一页(得到下一组结果)。这是严格的个人使用 - 我不拉动某人的搜索结果用于我的业务。我只是想让一个糟糕的搜索引擎做我想做的事。

回答

0

我写了一个类,允许您提供一堆url和一个代码块来在chrome扩展中删除页面。你可以在这里找到github回购:https://github.com/jkarmel/Executor。它可以使用一些更多的测试,我需要处理文档,但看起来它可能就是您要查找的内容。

这里是你将如何使用它来从几个不同的网页获得的所有链接:

/* 
* background.js by Jeremy Karmel. 
*/ 

URLS = ['http://www.apple.com/', 
     'http://www.google.com/', 
     'http://www.facebook.com/', 
     'http://www.stanford.edu']; 

//Function will be provided to exector to collect information 
var getLinks = function() { 
    var links = []; 
    var numLinks = $('a'); 
    $links.each(function(i, val) {links.push(val.href)}); 
    var request = {data: links, url: window.location.href}; 
    chrome.extension.sendRequest(request); 
} 

var main = function() { 
    var specForUsersTopics = { 
     urls  : URLS, 
     code  : getLinks, 

     callback : function(results) { 
      for (var url in results) { 
       console.log(url + ' has ' + results[url].length + ' links.'); 
       var links = results[url]; 
       for (var i = 0; i < links.length; i++) 
        console.log(' ' + links[i]); 
      } 
      console.log('all done!!!!'); 
     } 
    }; 
    var exec = Executor(specForUsersTopics); 
    exec.start(); 
} 

main(); 

所以基本上代码来收集将被提供给执行实例的链接,那么你会怎么做无论您想要回调中的结果如何。它可以处理更长的URL列表(〜1000),并且它可以一次处理多个(默认== 5)。它现在不能很好地处理代码块中的错误,所以一定要测试你提供的代码。

0

我喜欢窗帘A) “使用C#,找到一个图书馆......”

“HTML敏捷性包” 可能是你要找的:

http://htmlagilitypack.codeplex.com/

+0

好的建议。看起来它会做我想要的。不过,我很好奇这种事情是否可以在咖啡里完成。 – jcollum

0

你可以用Node.js,jsdom和jQuery轻松完成。请参阅this tutorial(在JavaScript中)。