Python3を使用したログインが必要なサイトでのスクレイピングについて
解決したいこと
Python3のrequestsを使用してログインが必要なサイトのスクレイピングを行いたい。
発生している問題・エラー
ログインが必要なサイトからのスクレイピングについて、
色々なサイトでやり方が記載されているのですが、
ajaxを使用したログイン方法についてpythonにどのように落とし込めば良いのかわからないため、質問させていただきます。
スクレイピングを行いたいサイトの検証画面を確認すると、
ログインボタンの押下時に「ajaxLogin()」を呼び出しており、
その中で下記の処理を行っています。
function ajaxLogin() {
var _loginUser = document.ajaxLoginForm.loginUser.value;
var _loginPass = document.ajaxLoginForm.loginPass.value;
var _site = document.ajaxLoginForm.site.value;
var _webCookie = document.ajaxLoginForm.webCookie.value;
var _errMsgFlg = document.ajaxLoginForm.errMsgFlg.value;
var _data = {site:_site, loginUser:_loginUser, loginPass:_loginPass, webCookie:_webCookie, errMsgFlg:_errMsgFlg};
$.ajax({
url: "https://site.com/mob/form/ajaxLogin.php",
type: "POST",
cache: false,
async: false,
dataType: "script",
data: _data,
error: function() {
$(".p-signin__alert").html("<span style='color: #ff0000;'>通信に失敗しました。</span>");
},
success: function() {
location.href="/mob/index.php?site=RIE&ima=0150&time=" + Math.round(new Date().getTime() / 1000);
}
});
自分で試したこと
やり方が分からなかったため、ネットの情報を参考に
以下のような記述を行いました。
tes_url = "https://site.com/mob/form/ajaxLogin.php"
data = {"site":site, "loginUser":user, "loginPass":password, "webCookie":"", "errMsgFlg":"ON"}
ses = requests.session()
res = ses.post(tes_url,data)
print(res.text)
上記で実行を行うと、ユーザー情報が返ってくるのですが、ログイン後のサイトをスクレイピングするためには、どのようにすればよいか教えていただけないでしょうか。
0 likes