2

特定の Web サイトをスクレイピングする UNIX シェル スクリプトを使用するように指示されています。fiddlerを使用して HTTP 要求をトレースし、それに応じてcURLを記述します。ほとんどの場合、ほとんどの Web サイトをスクレイピングするのはかなり簡単に思えますが、特定の情報を取得するのが困難な状況に遭遇しました。

私が実際に見ているウェブサイトのアドレスを提供することはできませんが、コンテキストを提供するためにリクエストとレスポンスの一部を投稿することはできます.

状況は次のとおりです。

ウェブサイトは検索画面から始まります。検索クエリを入力すると、Web サイトが結果のリストを返します。

結果ページから最初の結果を選択する必要があります。

最初の結果からページ上のすべてをキャプチャする必要があります。

この時点まではすべて正常に動作していますが 、問題は次のとおりです。

返されたページには、ウィケットであるハイパーリンクが含まれています。これらのリンクが押されると、ページ内にウィンドウがポップアップします。これは、実際には javascript によって作成されたポップアップのようなウィンドウではなく、Facebook で誰かを「メッセージを作成」または「突く」ときに表示されるものに似ています。 (まだそうしているのは私だけですか?)。

そのポップアップ ウィンドウの内容をキャプチャする必要があります。通常、特定のページには複数のウィケット リンクがあります。処理はループで十分簡単ですが、最初にそれらのウィケットを cURL する適切な方法を理解する必要があります。

これは、ウィケットをスクレイピングするために現在使用しているcURLです。

(リファラー URL、Accept、および Wicket-Ajax ブール値を明示的に定義しています。これらは、サイトをトレースしたときにヘッダーで送信された項目であるためです)。リンクは次のような URL です。

http://www.someDomainName.com/searches/?x=as56f1sa65df1&random=0.121345151

(私が信じているランダムには、JavaScriptが入力されていると思われますが、それが必要かどうか、または再作成が可能かどうかはわかりません。現在、ある特定の機会に受け取ったランダムの1つを送信しています. )。

/bin/curl -v3 -b COOKIE -c COOKIE -H "Accept: text/xml" -H "Referer: $URL$x" -H "Wicket-Ajax: true" -sLf "$link"

これが私が得る応答です:

<ajax-response><redirect><![CDATA[home.page;jsessionid=6F45DF769D527B98DD1C7FFF3A0DF089]]></redirect>
</ajax-response>

実際のコンテンツを含む XML ドキュメントが返されることを期待しています。この問題についての洞察をいただければ幸いです。さらに情報が必要な場合はお知らせください。

ありがとう、ポール

4

0 に答える 0