как я могу использовать js / coffee для очистки экрана asp? - PullRequest
0 голосов
/ 03 июля 2011

У меня есть веб-сайт, с которого я хотел бы получить данные, и он действительно застрял в каменном веке. Там нет веб-службы, нет API, и это очень много ASP / Session / таблицы на основе макета страницы. Довольно пугающе.

Я бы хотел просто очистить его и использовать js (coffeescript), чтобы автоматизировать это. Интересно, возможно ли это? Я мог бы сделать это с помощью C # и linqpad, но затем я застрял при анализе таблиц (и вложенных таблиц и вложенных таблиц) с помощью регулярных выражений. Плюс, если я сделаю это с js или coffeescript, мне станет намного удобнее с этими языками, и я смогу использовать jQuery для извлечения элементов из DOM.

Я вижу две возможности здесь:

  • используйте C # и найдите библиотеку, которая будет делать такие вещи, как Jquery, но в коде C #
  • используйте coffeescript (js) и используйте jquery для поиска элементов, которые я ищу на странице

Я также хотел бы немного автоматизировать страницу (получить следующий набор результатов). Это строго для личного использования - я не получаю результаты чьего-либо поиска для использования в моем бизнесе. Я просто хочу заставить дерьмовую поисковую систему делать то, что я хочу.

Ответы [ 3 ]

0 голосов
/ 03 июля 2011

Я написал класс, который позволяет вам предоставлять несколько 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) и будет работать более чем с одним одновременно (по умолчанию == 5). Сейчас он не очень хорошо обрабатывает ошибки в блоке кода, поэтому обязательно проверьте код, который вы предоставляете.

0 голосов
/ 04 июля 2011

Вы можете легко сделать это с Node.js, jsdom и jQuery. См. этот учебник (в JavaScript).

0 голосов
/ 03 июля 2011

Мне нравится занавес А) "используй C # и найди библиотеку ..."

"HTML Agility Pack" может быть именно тем, что вы ищете:

http://htmlagilitypack.codeplex.com/

...