このページの検索ボタンをクリックすると、投稿リクエストが送信されます。cli-http経由で投稿したい。どうやってやるの?
(def default-http-opts
{:socket-timeout 10000
:conn-timeout 10000
:insecure? true
:throw-entire-message? false})
(clj-http/post initial-url default-http-opts)
リクエストを投稿できますが、問題はいくつかのパラメーターを渡したいことです。これらのパラメーター (選択されたボタン) は、ページのデフォルトです。
彼らです:
AdvancedSearchForm:CourseOrSubjectSelection=ALL_ALL
AdvancedSearchForm:GraduateLevelSelection=ALL
AdvancedSearchForm:allStudyAreas=t
AdvancedSearchForm:departmentList=
AdvancedSearchForm:facultyList=
AdvancedSearchForm:keywords=
AdvancedSearchForm:level=ALL
AdvancedSearchForm:semester=ALL
oracle.adf.faces.FORM=AdvancedSearchForm
oracle.adf.faces.STATE_TOKEN=_id21519:_id21520
source=AdvancedSearchForm:searchButton
キー AdvancedSearchForm:semester に ':' が含まれているので、この「AdvancedSearchForm:semester」のように文字列をキーにしていますが、clj-http でよろしいでしょうか?
私はこのようにします:
(spit (file "/tmp" "ts.html")
(:body (http/post initial-url
{:form-params {"AdvancedSearchForm:CourseOrSubjectSelection" "ALL_ALL", "AdvancedSearchForm:GraduateLevelSelection" "ALL"}})))`
実際に返されるページは確かに「結果」ですが、コースがリストされていません。テンプレートのみ。手動でクリックするだけで表示されるすべてのコース リンクを取得したい。何か助けはありますか?
改ざんデータからスクリーンショットした画像です。検索ボタンをクリックした後に何が起こるかを示しています。クライアントが searchresult.jsp にリダイレクトされているようです。それを模倣するためにcurlを使用します。私はこのようにします
curl -D "form data..." https://handbook.unimelb.edu.au/faces/htdocs/user/search/AdvancedSearch.jsp
それからすぐに実行します
curl https://handbook.unimelb.edu.au/faces/htdocs/user/search/SearchResults.jsp
ページをダウンロードしても、結果の内容は表示されません。