問題タブ [mechanize-ruby]
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.
ruby-on-rails - 不要なキャッシングに苦しんでいるように見えるレーキタスクのスクレイピング
私は困惑しています!
毎分実行するようにcron化されたrakeタスクがあります。
ログインすると、関心のある JSON が見つかりますが、JSON の変更が rake タスクで認識されるまでに、タスクを最大 30 回実行できます。その間、特定の JSON オブジェクトのいくつかの変更を見逃していました。
キャッシングが行われているようです。示されているように Mechanize キャッシングをオフにしようとしましたが、他に何ができるかわかりません。
ポインタはありますか?
前もって感謝します。
サーバーからの応答:
ruby - タイトルに基づいてオブジェクトを見つけてクリックする方法は?
タイトルに基づいてhtmlオブジェクトをクリックしたい
しかし、私のコードは機能しません
それは返す(eval):14:in 'block (2 levels) in links_with': undefined method 'title' for #<Mechanize::Page::Link:0x1f6aeb0> (NoMethodError)
タイトルを使用してオブジェクトを見つけてクリックする方法はありますか?
ruby - マルチスレッド環境で異なるリクエスト間でセッションを共有 (機械化) しますか?
Ruby の Mechanize を使用してパスワードで保護されたサイトにログインし、特定のデータ フィードを使用するアプリケーションを開発しています。次に、私のアプリケーションでは、ユーザーがデータをクエリして操作できるようにします。新しいユーザーがアプリにアクセスするたびに、リモート データ ソースにログインしてデータをフェッチします。
質問は次のとおりです。リモート サイトでは、セッションを最大 24 時間持続させることができます。リモートサイトでの複数のログインを排除するための最適なソリューションは何ですか?
これを達成するには複数の方法があります: Mechanize オブジェクトをシリアライズしてデータベースに保存する、Mechanize の Cookie/jar/セッション情報をリクエスト間の共有ファイルに保存するなど。 Heroku のマルチスレッド環境で動作します。
ruby - Recover net::ERR_CONNECTION_SET Mechanize Ruby
Mechanize for ruby を使用して Web クローラーを作成しています。一度に 200k のバッチを実行し、サイトが無効であることを示すインスタンス変数を設定し、get リクエストがエラーを返したときに次のサイトに移動できるようにしたいと考えています。たとえば、http get リクエストが発行さError 101 (net::ERR_CONNECTION_RESET): The connection was reset.
れてアプリケーションがクラッシュしたときに返されるサイトをクロールしています。
ERR_CONNECTION_RESET から回復できるようにキャッチする必要がある例外はありますか、またはこれを行うために使用したアプローチは何ですか?
ruby - Mechanize が不適切な OAuth クレデンシャルを検出すると、「undefined method 'any?'」を発生させるのはなぜですか?
内部で Mechanize を使用する Ruby コードをテストしています。リクエストで不正な OAuth トークンを渡すと、Mechanize が予期しない例外をスローすることがわかりました。
不正なトークンを使用して呼び出しを行うと、呼び出しで次の例外が発生します。
回答として投稿する追加の分析がありますが、誰かが追加の洞察を持っている場合は、それをいただければ幸いです。
この質問を mechanize-users メーリング リストに投稿しようとしましたが、モデレーターは投稿しませんでした。
ruby - mechanize-ruby を使用してログイン フォームを送信する場合、変数を使用してフィールド名を表すことはできますか?
Mechanize を使用してログイン フォームを送信するときに問題が発生しました。たとえば、bitbucket にログインする必要がある場合:
これは非常に簡単ですが、すべてのログイン フォームがこれら 2 つのフィールドに同じ「名前」の値を持っているわけではありません。たとえば、WordPress のログイン フォームは "log" と "pwd" を使用します。これにより、上記のコードが無効になります。
いくつかのパラメーターをこのメソッドに渡して、さまざまなログイン フォームで使用できるようにしたいと考えています。「文字列からオブジェクト属性名に変換する方法」に従おうとしましたが、失敗しました:
誰かが助けてくれれば本当に感謝します。
ruby - http 認証に関する Ruby Mechanize の問題
http 認証を使用する Web サイトを回避するのに問題があります。いくつかのスクラップを行っているサイトのリストがありますが、それらのいくつかは http 認証を使用しています。私はそれらのサイトのコンテンツを取得しようとは考えていません.http認証によって保護されているかどうかを判断してから先に進みたいと思っています. たとえば、次のスニペットでは、agent.get が返されないため、処理できません。このようなケースはどうすればよいのでしょうか?
ruby - Mechanizeでのgetaddrinfoエラー
私は、データベース内のすべての顧客を調べ、顧客のWebサイトのURLが機能することを確認し、顧客のホームページでTwitterリンクを見つけようとするスクリプトを作成しました。確認するURLは10,000を少し超えています。URLが検証された場合のほんの一部の後、すべてのURLに対してgetaddrinfoエラーが発生し始めます。
単一のURLをスクレイプするコードのコピーは次のとおりです。
注:このコードのバージョンを実行して、scrape_urlへのすべての呼び出しで共有される単一のMechanizeインスタンスを作成しました。まったく同じように失敗しました。
これをEC2で実行すると、ほぼ正確に1,000のURLを通過し、残りの9,000以上に対してこのエラーが返されます。
注:AmazonのDNSサーバーとGoogleのDNSサーバーの両方を使用してみましたが、これは正当なDNSの問題である可能性があると考えています。どちらの場合もまったく同じ結果が得られました。
次に、ローカルのMacBookProで実行してみました。残りのレコードに対してこのエラーを返す前に、約250を通過しただけです。
スクリプトを取得してすべてのレコードを処理する方法を知っている人はいますか?
ruby-on-rails - Twitter API 対 Web スクレイピング?
まず、Twitter アカウントのすべてのフォロワーを取得したいと考えています。少し調べてみたところ、Nokogiri または Mechanize gem を使用して、Ruby on rails で Web スクレイピングを実行できることがわかりました。また、Web スクレイピングに使用する CSS セレクターも取得しました。HTML ページのソースを調べても、アカウントのすべてのフォロワーが表示されません。
Web スクレイピング コードを使用してすべての Twitter フォロワーを取得できますか、それとも Twitter API を使用する必要がありますか?
ruby - 生成されたファイル名をrubyで使用してファイルをダウンロードし、機械化するにはどうすればよいですか?
CDNを使用して配信するWebサイトからファイルをダウンロードしようとしています。ダウンロードページのURLはすべてfile.pdfで終わりますが、ブラウザでリンクをクリックすると、説明的なファイル名(たとえば、「invoice1234.pdf」)のファイルがダウンロードされます。明らかに、URLを解析してファイル名を取得すると、すべてのファイルにfile.pdfという名前が付けられます。ブラウザーからダウンロードするときに使用するのと同じファイル名を使用したいと思います。私のコードは次のようになります。
任意のアイデアをいただければ幸いです!