質問

書いていこうと思い一部のコードを見たり当社ウェブサイトならびに資産を一部更や、レポートを提出します。資産を含む。持ってき方など、さすがだなと私ることができるリンク、または少なくとも試みるメニューのページです。たいものをいうCMSのサイトに基づき、クラス名。

私はこのようなサイトと合理的に静的、動によるCMSがない"のようなものであるというRIA.

アイデアざいます。

1)負荷サイトへのiFrame.この思いが解析では、jQuery.やっていただきます。そう思阻害によるクロスサイトスクリプティング。からの提案にそういった問題にもっとブラウザでは引き続き締いと思います。のようbookmarkletすか?

2)Firefoxに追加できます。このようだが、周辺には、クロスサイトスクリプティングの問題ですよね?う可でデバッグツールのためのFirefox、GreaseMonkeyる)までの全ての種類のもの。

3)ブサイト上のサーバー側となります。ライブラリを使用、サーバ側で解析.

4)YQL.でないこともに築のための構文解析す。

役に立ちましたか?

解決

それはプロジェクトの規模によって異なります。完全に自動化されておらず、単なるカジュアルな場合は、Firefox アドオンを強くお勧めします。

私も同様のプロジェクトの真っ最中です。Javascript を使用して生成されたページの DOM を分析する必要があります。サーバーサイドのブラウザを作成するのは難しすぎたので、他のテクノロジーに目を向けました。Adobe AIR、Firefox アドオン、ユーザースクリプトなど

自動化が必要ない場合は、Fx アドオンが最適です。スクリプトはページを分析し、結果を表示し、不確かな部分を修正するよう求め、最終的にデータをバックエンドに送信します。すべての DOM にアクセスできるため、JS/CSS/HTML などのパーサーを作成する必要はありません (それは大変な作業です!)。

もう一つの方法はAdobe AIRです。ここでは、アプリケーションをより詳細に制御できます。アプリケーションをバックグラウンドで起動し、ユーザーの操作なしですべての解析と分析を行うことができます。欠点は、ページのすべての DOM にアクセスできないことです。これを回避する唯一の方法は、単純なプロキシを設定し、ターゲット URL を取得し、JavaScript を追加することです (信頼できるサンドボックス ブリッジと信頼できないサンドボックス ブリッジを作成するため)。これは汚いハックですが、機能します。

編集:Adobe AIR では、外国の Web サイトの DOM にアクセスする方法が 2 つあります。

  • Ajax 経由でロードし、HTMLLoader オブジェクトを作成し、それに応答をフィードします (loadString IIRC法)
  • iframe を作成し、信頼されていないサンドボックスにサイトを読み込みます。

理由は覚えていませんが、最初の方法は失敗したため、もう 1 つの方法を使用する必要がありました (セキュリティ上の理由があり、回避できなかったと思います)。そして、サイトの DOM にアクセスするためにサンドボックスを作成する必要がありました。ここで少し説明します サンドボックスブリッジの処理. 。アイデアは、単純な JS を追加するプロキシを作成することです。 childSandboxBridge そして、いくつかのメソッドを親に公開します (この場合:AIR アプリケーション)。スクリプトの内容は次のようなものです。

window.childSandboxBridge = {
   // ... some methods returning data
}

(注意してください。サンドボックス ブリッジを介して渡せるものには制限があります。複雑なオブジェクトはもちろんありません。プリミティブ型のみを使用してください)

したがって、プロキシは基本的に、HTML または XHTML を返すすべてのリクエストを改ざんしました。他のものはすべて変更せずにそのまま通過しました。私はこれを Apache + PHP を使用して実行しましたが、いくつかのプラグイン/カスタム モジュールを備えた実際のプロキシでも確実に実行できます。この方法で、あらゆるサイトの DOM にアクセスできるようになりました。

編集の終わり.

私が知っている 3 番目の方法は、最も難しい方法です。 ブラウザショット. 。次に、Firefox を自動化して使用します。サーバー上に Mac OS X がある場合は、ActionScript を使用して自動化を行うことができます。

つまり、要約すると次のようになります。

  • PHP/サーバーサイドスクリプト — 独自のブラウザ、JS エンジン、CSS パーサーなどを実装する必要があります。完全に制御され、代わりに自動化されます。
  • Firefox アドオン — DOM やその他すべてのものにアクセスできます。ユーザーがそれを操作する必要があります (または、少なくとも何らかの自動リロードを備えた Firefox セッションが開かれている必要があります)。ユーザーがプロセス全体をガイドするための優れたインターフェイス。
  • Adobe AIR — 動作するデスクトップコンピュータが必要で、Fx アドオンを作成するよりも困難ですが、より強力です。
  • 自動ブラウザ — Web 開発というよりデスクトップ プログラミングの問題です。グラフィカル環境がなくても Linux ターミナル上でセットアップできます。熟練したハッキン​​グスキルが必要です。:)

他のヒント

私の提案は以下のようになります:

a)のスクリプト言語を選択しました。私は、PerlやPythonをお勧め:また、カール+ bashのそれ悪いなし例外処理

b)はPythonやPerlのライブラリを使用して、スクリプトを介してホーム・ページをロードします。 Perlの WWWを試してみてください:: のモジュールを機械。

Pythonの組み込みモジュールがたくさんある、www.feedparser.org

でまた見てみてください

C)、アプリケーションサーバ名を見つけるために、HTTPヘッドコマンドを介してサーバヘッダ()を調べます。運がよければあなたもCMS名(I。ワードプレスなど)を検索します。

サイトを指すリンクを見つけるために:再びあなたがGoogleのホームページ上のPythonのコード例があります:

D)「sitedomain.comリンク」のようなものを尋ねるために、GoogleのXML APIを使用してください。また、参考にすることができGoogleにランク付けドメインを求めています。

E)その後、ポストExcelでそれらを処理し、SQLiteのDBにデータを収集することができます。

あなたは、単にソースをフェッチ(XHTML / HTML)と、それを解析する必要があります。あなたは、ほぼすべての近代的なプログラミング言語でそれを行うことができます。自分のコンピュータからインターネットに接続されている。

のiframeはHTMLコンテンツを表示するためのウィジェットです、それはデータ分析のための技術ではありません。あなたはどこにでもそれを表示せずにデータを分析することができます。あなたも、ブラウザを必要としません。

PythonやJavaのような言語では

ツール、PHP Javascriptのか何でもあなたがそれらのFirefoxの拡張機能を持っているよりも、あなたの仕事のために、確かに、より強力です。

また、技術はウェブサイトの背後にあるかは重要ではありません。 XHTML / HTMLは関係なく、ブラウザがそれがどのようにレンダリングされるか、文字だけの文字列です。あなたの「資産」を見つけるためにあなたは、単に「IMG」、「オブジェクト」などのような特定のHTMLタグを探します。

私は拡張子を書いて考えると Firebugののproabablyを行う最も簡単な方法の一つだろう。例えば YSlowのには、Firebugのの上に開発された、それはあなたが探している機能の一部を提供します(例えば、画像、CSSとJavascript-要約)。

最初にオプション #4 (YQL) を試してみることをお勧めします。その理由は、これによって必要なデータがすべて取得でき、実際にブラウザでそのページにアクセスしなくてもサイトに関する情報を取得できる Web サイトなどとしてツールを構築できるように見えるためです。YQL が必要な用途に機能する場合は、このオプションを使用するのが最も柔軟性が高いと思われます。

YQL がうまくいかない場合は、オプション #2 (Firefox アドオン) を使用することをお勧めします。

おそらくそうすべきだと思います 試す クロスサイト スクリプティングの問題はすでに認識されているため、オプション #1 (Iframe) は避けてください。

また、私はオプション #3 (サーバー側でサイトを取得する) を使用しましたが、過去に遭遇した問題の 1 つは、AJAX 呼び出しを使用して事後的にコンテンツを読み込むサイトが取得されることです。当時、AJAX を使用するページの完全なコンテンツを取得する良い方法が見つかりませんでした。そのため、その障害に注意してください。ここにいる他の人もそれに遭遇しました。これを参照してください。 動的なWebサイトをスクレイピングする

AJAX 動的コンテンツの問題:Ajax の問題には、AJAX 自体を使用してコンテンツを取得したり、evalScripts:true パラメーターを使用したりするなど、いくつかの解決策がある可能性があります。詳細と、取得されたコンテンツからの JavaScript の評価方法に関する注意が必要な問題については、次の記事を参照してください。

プロトタイプライブラリ: http://www.prototypejs.org/api/ajax/updater

伝言板: http://www.crackajax.net/forums/index.php?action=vthread&forum=3&topic=17

または、お金を費やすつもりがある場合は、これを見てください。http://aptana.com/jaxer/guide/develop_sandbox.html

ここでは、WebRobot という .NET コンポーネントを使用して、Digg.com などの動的な AJAX 対応サイトからコンテンツをスクラップする、醜い (しかしおそらく便利な) 例を示します。http://www.vbdotnetheaven.com/UploadFile/fsjr/ajaxwebscraping09072006000229AM/ajaxwebscraping.aspx

また、PHP と Curl ライブラリを使用して Web ページからすべてのリンクをスクラップすることに関する一般的な記事もここにあります。ただし、この記事と Curl ライブラリが AJAX コンテンツの問題をカバーしているかどうかはわかりません。http://www.merchantos.com/makebeta/php/scraping-links-with-php/

私が今思いついた、うまくいくかもしれないことの 1 つは次のとおりです。

  1. コンテンツを取得し、AJAX を使用して評価します。
  2. コンテンツをサーバーに送信します。
  3. ページ、リンクなどを評価します。
  4. [オプション] コンテンツをローカル ページとしてサーバーに保存します。
  5. 統計情報をページに戻します。
  6. [オプション] キャッシュされたローカル バージョンを強調表示して表示します。

^注:ローカル バージョンを保存する場合は、正規表現を使用して相対リンク パス (特に画像) を正しく変換する必要があります。

幸運を!AJAX の問題には注意してください。現在、多くのサイトでは AJAX を使用してコンテンツを動的に読み込みます。Digg.com もそうですし、MSN.com もニュース フィードなどでやっています。

は。Netプログラマはこの日、私のアドバイスを利用するC#言語や他の言語です。Netランタイム環境を含んでいます。をご利用 ブラウザ 制御への負荷のページでは、その後の反復処理の要素の書面によ GetElementsByTagName())リンク、画像など。ちょっとした工(解析では、BASEタグが、解決できるsrcは、href属性へのURLを使用し HttpWebRequest 送信長のご請求対象の画像があるサイズです。ういうグラフィカルに集中のページだったことは反省すべきだと思います。追加するのに興味を持っているかもしれに含める敵な楽/pagerank(Google APIを問わず、ページ 検証としてHTMLやXHTML, のリンクへのリンクはURLと同じドメインとオフサイト、および、可能な場合は、Googleランキングのページに様々な検索文字列(ゃりこのプログラムによりますが。

私は、ネットワークとテキスト解析/正規表現を強力にサポートする言語で書かれたスクリプト (または選択した言語に応じてコンパイルされたアプリ) を使用します。

  • パール
  • パイソン
  • 選択した.NET言語
  • ジャワ

最も使いやすい言語で構いません。基本的なスタンドアロン スクリプト/アプリを使用すると、ブラウザーの統合やセキュリティの問題についてあまり心配する必要がなくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top