0
我想用Jsoup登錄到網站,然後刮內容。我已經閱讀了一些類似的問題,並認爲我需要做一個POST
並傳遞所有輸入參數。我已經這樣做了,但由於某種原因它仍然無法使用。任何幫助不勝感激。使用JSoup登錄之前刮網站
HTML表單:
<form method="post" action="https://login.yahoo.com/config/login?" name="login_form" id="login_form" onsubmit="return hash2(this)">
<input type="hidden" name="sessionId" id="sessionId" value="IyLZEAs5n9RP">
<input type="hidden" name=".tries" value="1">
<input type="hidden" name=".src" value="spt">
<input type="hidden" name=".md5" value="">
<input type="hidden" name=".hash" value="">
<input type="hidden" name=".js" value="">
<input type="hidden" name=".last" value="">
<input type="hidden" name="promo" value="">
<input type="hidden" name=".intl" value="us">
<input type="hidden" name=".lang" value="en-US">
<input type="hidden" name=".bypass" value="">
<input type="hidden" name=".partner" value="">
<input type="hidden" name=".u" value="516l00ha52emg">
<input type="hidden" name=".v" value="0">
<input type="hidden" name=".challenge" value="HupRQ9x1ptIRHP1H8P9eYBbAlofE4YsoSQ--">
<input type="hidden" name=".yplus" value="">
<input type="hidden" name=".emailCode" value="">
<input type="hidden" name="pkg" value="">
<input type="hidden" name="stepid" value="">
<input type="hidden" name=".ev" value="">
<input type="hidden" name="hasMsgr" value="0">
<input type="hidden" name=".chkP" value="Y">
<input type="hidden" name=".done" value="http://hockey.fantasysports.yahoo.com/hockey/27381/startingrosters?.scrumb=0">
<input type="hidden" name=".pd" value="spt_ver=0&c=&ivt=&sg=">
<input type="hidden" name=".ws" id=".ws" value="0">
<input type="hidden" name=".cp" id=".cp" value="0">
<input type="hidden" name="nr" value="0">
<input type="hidden" name="pad" id="pad" value="6">
<input type="hidden" name="aad" id="aad" value="6">
<div id='inputs'>
<input name='login' id='username' type="text" maxlength='96' tabindex='1' aria-required="true" placeholder="Yahoo ID" autocorrect="off" value="">
<input name='passwd' id='passwd' type='password' maxlength='64' tabindex='2' aria-required="true" placeholder="Password" autocorrect="off" value="">
<div id="captchaDiv"></div>
</div>
我的代碼:
Connection.Response loginForm = Jsoup.connect(url).method(Connection.Method.GET)
.execute();
Document doc = Jsoup.connect(url).data("sessionId", "IyLZEAs5n9RP").data(".tries", "1").data(".src", ".spt").data(".md5", "").data(".hash", "").data(".js", "").data(".last", "").data("promo", "").data(".intl", "us").data(".lang", "en-US").data(".bypass", "").data(".partner", "").data(".u", "515l00ha52emg").data(".v", "0").data(".challenge", "HupRQ9x1ptIRHP1H8P9eYBbAlofE4YsoSQ--").data(".yplus", "").data(".emailCode", "").data("pkg", "").data("stepid", "").data(".ev", "").data("hasMsgr", "0").data(".chkP", "Y").data(".done", "http://hockey.fantasysports.yahoo.com/hockey/27381/startingrosters?.scrumb=0").data(".pd", "spt_ver=0&c=&ivt=&sg=").data(".ws", "0").data(".cp", "0").data("nr", "0").data("pad", "6").data("aad", "6")
.data("login", "MYEMAIL").data("passwd", "MYPASSWORD")
.cookies(loginForm.cookies()).post();
System.out.println(doc.title());
運行此,它仍然打印登錄標題雖然。對不起,單行格式不好,但有很多參數,它們的值與問題無關。我把最後幾個參數放在新行上。
看看參數,我可以看到像「sessionId」這樣的東西會因會話不同而不同。我可以看到這是一個問題。這是否意味着我必須先保存該特定sessionId的值並將該值傳遞給我的Jsoup.connect
?