如何使用js/coffee来截屏asp页面

本文关键字:asp 页面 coffee 何使用 js | 更新日期: 2023-09-27 18:01:13

我有一个网站,我想从中提取数据,它真的陷入了石器时代。没有web服务,没有API,它在很大程度上是一个ASP/Session/基于表的布局页面。相当闷热。

我只想把它截屏,然后用js(coffeescript(来实现自动化。我想知道这是否可能。我可以用C#和linqpad来做这件事,但后来我一直在用regex解析表(以及子表和子表(。另外,如果我使用js或coffeescript,我会对这些语言更加熟悉,并且我可以使用jQuery从DOM中提取元素。

我看到两种可能性:

  • 使用C#并找到一个库,它可以在C#代码中执行Jquery之类的操作
  • 使用coffeescript(js(和jquery来查找我在页面中查找的元素

我还想让页面自动化一点(得到下一组结果(。这是严格为个人使用——我不会提取某人的搜索结果用于我的业务。我只想让一个糟糕的搜索引擎做我想做的事。

如何使用js/coffee来截屏asp页面

我写了一个类,允许您提供一堆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();

因此,基本上,收集链接的代码将提供给executor实例,然后您可以对回调中的结果执行任何您想要的操作。它可以处理url的长列表(~1000(,并且一次可以处理多个url(默认==5(。它现在不能很好地处理代码块中的错误,所以一定要测试您提供的代码。

我喜欢Curtain A("使用C#并找到一个库…">

"HTML敏捷包"可能正是你想要的:

http://htmlagilitypack.codeplex.com/

使用Node.js、jsdom和jQuery可以轻松完成。请参阅本教程(使用JavaScript(。