2
我在抓取我希望抓取的確定網站時遇到問題。問題是:成功登錄到該網站後,我無法訪問需要有效登錄的鏈接。JSOUP - 如何使用JSOUP抓取「需要登錄」頁面
例如:
public Document executeLogin(String user, String password) {
try {
Connection.Response loginForm = Jsoup.connect(url)
.method(Connection.Method.GET)
.execute();
Document mainPage = Jsoup.connect(login-validation-url)
.data("user", user)
.data("senha", password)
.cookies(loginForm.cookies())
.post();
Document evaluationPage = Jsoup.connect(login-required-url)
.get();
return evaluationPage;
} catch (IOException ioe) {
return null;
}
我在這裏做的是:
- 從登錄頁面獲取餅乾,這樣我就可以正常登錄;
- 然後我發佈到登錄驗證網址,該網址在登錄後返回主頁面;
- 最後,我嘗試在登錄到主頁面後訪問登錄所需的url,但該請求返回了登錄頁面,就好像會話已過期。
我知道我必須存儲cookie以保持會話活着,但是當我連接到登錄驗證url時,它會返回一個Document對象,並且沒有從該對象獲取的cookie。
有什麼辦法可以獲得成功登錄創建的「會話」,並在其他Jsoup.connects內發送它?我想要做的是抓取一個只能被登錄用戶訪問的頁面。
非常感謝您提前。
你絕對正確,它完全奏效!非常感謝你。但是,請幫助我澄清最後一件事:將這些cookie發送到登錄帖時,他們是否會遭受任何修改?再次感謝,它幫助了我很多。 –
@IvanAssalim不,他們不。就像在開發者控制檯中檢查網絡選項卡一樣,Cookie基本上是在那裏列出的Cookie,除了在「幻想」地圖中。 – Meinkraft
該代碼可以僅使用來自登錄的cookie,用於所有後續請求,而不會。幾乎沒有使用純粹的基於cookie的驗證的網站,該cookie會改變(除了WordPress)。 –