問題タブ [screen-scraping]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - どうすればCookieを外部のWebブラウザに渡すことができますか?
フォーム認証を使用するWebサイトにブラウザウィンドウ(おそらくIEに固執する可能性があります)を開く必要があるアプリケーションを作成しています。秘訣は、アクセスする必要のあるサイトの数が非常に多いために時間を節約するために、それらをすでに認証する必要があるということです。(最終的には、それらをスクリーンスクレイピングしてデータを処理します...しかし、必要なときにクリックして実際のサイトにアクセスできるように、認証部分を機能させる必要があります。)
HttpWebRequestを使用してhtmlを取得し、それをブラウザーに渡すことができるという点で、FormsAuthenticationの部分が機能しています。ただし、実際のWebサイトに移動できるように、Cookieをクライアントブラウザに転送することはできません。
認証用のSystem.Net.Cookiesを取得しており、それらをSystem.Web.HttpCookiesにコピーして、Responseオブジェクトに追加してみました。ページにリンクを配置するか、Response.Redirectを使用してWebサイトに移動すると、機能しません。ユーザーが認証されていないかのように動作します。
誰かが私がこれをどのようにやってのけるのか考えていますか?
これをより明確にするために、現在のコードは次のとおりです。
algorithm - ウェブページの住所を認識するアルゴリズム
HTML ページの構造化データを認識するための最適なアルゴリズムは何ですか?
たとえば、Google は電子メール内の自宅/会社の住所を認識し、この住所への地図を提供します。
algorithm - RSSエントリをHTML本文にマップしますw。不正確な検索
この問題をどのように解決しますか?
あなたはブログのHTMLをスクレイピングしています。ブログのHTMLの一部はブログ投稿であり、一部は書式設定、サイドバーなどです。HTML内のどのテキストがどの投稿に属しているか(つまり、パーマリンク)を識別できるようにする必要があります。
私はあなたが何を考えているか知っています:あなたはただRSSを見て、HTMLを完全に無視することができます!ただし、RSSには非常に短い抜粋しか含まれていないか、興味のあるリンクが削除されていることがよくあります。同じページのHTMLとRSSを一緒に使用して、RSSの抜粋を本質的に無効にします。
RSSエントリは次のようになります。
HTMLのブログ投稿は次のようになります。
したがって、HTMLページには同じフィールドが含まれますが、パーマリンクの配置は事前にわかりません。フィールドは、ほとんどがHTMLと空白であるノイズテキストで区切られますが、「投稿者Johnny」などの追加のメタデータも含まれる可能性があります。 "または日付またはそのようなもの。以下で説明するように、テキストはHTMLとRSSでわずかに異なる場合もあります。
追加のルール/警告:
- タイトルは一意でない場合があります。これはあなたが思っているよりも頻繁に起こります。私が見た例:「月曜日のまとめ」、「TGIF」など。
- タイトルは空白のままにすることもできます。
- RSSの抜粋もオプションですが、少なくとも空白以外の抜粋または空白以外のタイトルが必要であると想定しています。
- RSSの抜粋には投稿コンテンツ全体が含まれている可能性がありますが、投稿本文の先頭の短い抜粋が含まれている可能性があります
- パーマリンクは一意である必要があり、HTMLとRSSの両方で同じである必要があると想定します。
- タイトルと抜粋および投稿の本文は、RSSとHTMLでわずかに異なる形式になっている場合があります。例えば:
- RSSでは、タイトルまたは本文の内部のHTMLが削除されているか、HTMLページにHTMLが追加されているか(投稿本文の最初の文字を何かで囲むなど)、わずかに異なる形式になっている可能性があります。
- テキストは、RSSではutf8であるのに対し、HTMLでは非ASCII文字は常にアンパサンドエンコーディングを使用してエンコードされるなど、わずかに異なる方法でエンコードされる場合があります。ただし、これは非ASCII文字がまれな英語のテキストであると想定してください。
- 正しくエンコードされていないWindows-1252の恐ろしさがある可能性があります。これは、中引用符のような記号文字でよく発生します。ただし、ほとんどのテキストはASCIIであると想定しても問題ありません。
- 特にタイトルでは、どちらの方向にもケースが折りたたまれている可能性があります。したがって、HTMLページではタイトルをすべて大文字にすることはできますが、RSSではできません。
- RSSフィードとHTMLページのエントリ数は同じであるとは想定されていません。古いエントリが多かれ少なかれある可能性があります。両方に表示される投稿のみを取得することを期待できます。
- RSSは遅れる可能性があります。RSSフィードにまだ表示されていない新しいエントリがHTMLページにある可能性があります。これは、RSSがFeedburnerを介してシンジケートされている場合に発生する可能性があります。繰り返しになりますが、RSSとHTMLの両方に表示される投稿のみを解決することが期待できます。
- 投稿の本文は非常に短くても長くてもかまいません。
100%の精度は制約ではありません。ただし、精度が高いほど優れています。
さて、あなたはどうしますか?
c# - C# での Windows アプリケーションのスクリーン スクレイピング
別のプログラムでクエリを実行するために、Windows アプリケーションからデータをスクレイピングする必要があります。.NETでこれを行うための良い出発点を知っている人はいますか?
web-crawler - 悪意のあるユーザーによるクロールからサイトを保護/監視する方法
状況:
- ユーザー名/パスワードで保護されたコンテンツを含むサイト (試用/テスト ユーザーになる可能性があるため、すべてが制御されるわけではありません)
- ユーザー名/パスワードの制限により、通常の検索エンジンではアクセスできません。
- 悪意のあるユーザーは引き続きログインして、セッション Cookie を「wget -r」などに渡すことができます。
問題は、そのようなアクティビティを監視し、それに対応するための最良のソリューションは何かということです (サイトのポリシーがクロール禁止/スクレイピングを許可していないことを考慮すると)。
いくつかのオプションを考えることができます:
- トラフィック監視ソリューションをセットアップして、特定のユーザー/IP のリクエスト数を制限します。
- 最初のポイントに関連: 一部のユーザー エージェントを自動的にブロックする
- (Evil :)) アクセス時にユーザーをログアウトさせ、アカウントを無効にする隠しリンクを設定します。(おそらく、通常のユーザーはクリックするためにそれを見ないため、これにアクセスすることはありませんが、ボットはすべてのリンクをクロールします。)
ポイント1については、すでに実装されている優れたソリューションを知っていますか? 経験はありますか?問題の 1 つは、非常にアクティブだが人間のユーザーの場合、誤検出が発生する可能性があることです。
ポイント 3: これは本当に悪いことだと思いますか? または、それに関する問題の可能性はありますか?
その他のご提案も承ります。
python - プログラマティックフォーム送信
ウェブページの内容を削りたい。コンテンツは、そのサイトのフォームに記入して送信した後に作成されます。
最終結果のコンテンツ/ウェブページをスクレイプする方法を読みましたが、プログラムでフォームを送信するにはどうすればよいですか?
私はPythonを使用していて、フォームを含む元のWebページを取得し、それを解析し、フォームパラメーターを取得してから、Xを実行する必要があるかもしれないことを読みました。
誰かが私を厳密な方向に向けることができますか?
screen-scraping - 画面のスクレイピングからの保護
画面スクレイピングの合法性に関する私の質問に続いて、たとえそれが違法であっても、人々はまだ試みます。
画面のスクレイピングを防止する、または少なくともやる気をなくすために、どのような技術的メカニズムを採用できますか?
ああ、ニヤニヤして生活を困難にするためだけに、検索エンジンへのアクセスを維持するのは良いことかもしれません. 私はここで悪魔の擁護者を演じているかもしれませんが、深刻な根底にあるポイントがあります.
javascript - JavaScript から呼び出してデスクトップのスクリーン ショットを作成および保存できる、GUI を使用しないアプリケーションを知っている人はいますか?
この主題は、私がずる賢いことをしようとしているように聞こえるかもしれませんが、そうではありません。数百の電話オペレーターが使用する内部 Web サイトを管理しており、次の機能を追加したいと考えています。
すべての Web ページのヘッダーにコントロールを追加して、デスクトップ全体の画像をキャプチャし、その画像をファイルとして共有ネットワーク ドライブに保存して、生産上の問題のトラブルシューティングを支援したいと考えています。このスクリーン キャプチャ アプリは、JavaScript によって呼び出されます。
このサイトでスクリーンショットのキャプチャに関する多くのスレッドを調査しましたが、提供されているすべてのアプリケーションが次の 2 つの理由のいずれかで私のニーズを満たしていません。
スクリーン キャプチャ アプリケーションには、ポップアップする GUI があり、ユーザーはある種のキャプチャ コントロールのサイズを変更するか、ウィンドウと対話してキャプチャを実行します。ユーザーはコンピューターにあまり詳しくなく、「ポップアップ」アプリケーションを正しく使用することを信頼できませんでした。また、一般的なファイル命名規則で画像ファイルを保存するよう強制することは不可能です。ユーザーが Web サイトで 1 つの UI コントロールを押して、JavaScript が呼び出しを行い、スクリーン ショットを取得して、それ以上のユーザー操作なしで画像を保存するようにしたいと考えています。
一部の自動アプリケーションは、サイトに再投稿して HTML を保存し、個々の HTML 要素を画像に「再構築」します。これは、オペレーターが入力した入力データが画像に含まれている必要があるため機能しません。サイトは AJAX を使用しているため、Web ページの視覚的な「状態」は、POST から再取得したものとは異なります。また、アプリケーションによっては、当社の (保護された) Web サイトと対話しようとしたときに、(Active Directory) セキュリティの問題が発生しました。
このニーズを満たすアプリケーションがない場合は、C# で独自のコントロールを展開します。しかし、私はむしろサードパーティのコントロールを取得したいと思います. だから私は一生自分のコントロールをサポートする必要はありません。:-)
php - PHP + SimpleXML を使用したスクレイピング...画像は取得できますが、生のテキストは取得できませんか?
Web サイトから特定の生のテキストを取得しようとしています。このサイトと他の情報源を使用して、simpleXML と xpath を使用して特定の画像を取得する方法を学びました。
ただし、生のテキストを取得するために同じアプローチが機能していないようです。現在機能していないのは次のとおりです。
画像を取得すると、その commcount オブジェクトは画像ソースを含む配列を返します。
この場合、そのオブジェクトが「storyCommentCountNumber」div に含まれる生のテキストを返すようにします。しかし、そのテキストはオブジェクトに含まれているようには見えず、Div の名前だけです。
私は何を間違っていますか?このアプローチは、生のテキストではなく、HTML 要素とその内部のビットを取得するためだけのものであることがわかります。そのdiv内のテキストを取得するにはどうすればよいですか?
ありがとう!