2011-07-02 2 views
0

私はデータを取得したいと思うウェブサイトを持っています。それは本当に石の時代にはまっています。 Webサービスはなく、APIもなく、ASP /セッション/テーブルベースのレイアウトページです。かなり醜い。js/coffeeを使用してASPページをスクレイプする方法を教えてください。

私はそれをスクレイプし、js(coffeescript)を使ってそれを自動化したいと思います。これが可能かどうか疑問に思います。私はC#とlinqpadでこれを行うことができましたが、正規表現を使ってテーブル(とサブテーブルとサブテーブル)を解析することに固執しています。また、jsやcoffeescriptを使用すると、これらの言語ではさらに快適になり、jQueryを使用してDOMから要素を引き出すことができます。

私はここに二つの可能性を参照してください。

  • 使用のC#をとjQueryのようなものを行いますライブラリを見つけることが、C#コードで
  • 利用のCoffeeScript(JS)と私は「の要素を見つけるためにjqueryのを使用しますページ内で探している人

私はまた、ページを少し自動化したい(次の結果を得る)。これは厳密にはの個人的な使用です - 私は私のビジネスで使用するために誰かの検索の結果を引き出していません。私はほんとうの検索エンジンを私が望むようにしたいだけです。

答えて

0

私はあなたにURLの束とクロム拡張の中のページを掻き集めるコードブロックを提供することを可能にするクラスを書いた。あなたはここでギブスのレポを見つけることができます: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)を参照してください。

関連する問題