
前提
https://web-m.cc.oita-u.ac.jp/cgi-bin/htmlparse.cgi?html=sessionout.html&lang=
上記のサイトでスクレイピングをしようと思っているのですが、HTMLでアクセストークンを見つけ出すことができませんでした。
実現したいこと
当サイトのスクレイピング
発生している問題・エラーメッセージ
トークンなしでは実行してもログイン先のHTMLを見ることができませんでした。
<html> <head> <meta content="No-Cache" http-equiv="Pragma"/> <meta content="Wed, 01-01-90 00:00:00 GMT" http-equiv="Expires"/> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>大å大å¦ã¡ã¼ã«ã·ã¹ãã (DEEPMail)</title> <link href="../favicon.ico" rel="shortcut icon"/> </head> <frameset border="0" cols="*,0,0" frameborder="no" framespacing="0"> <frame name="content" scrolling="NO" src="topframe.cgi?focus= <!-- Error Occured : Failed to operate left operand --> @if(&SESSION_initpageopt==0);home@end_if;"/> <frame name="process" noresize="" scrolling="NO" src="../blank.html"/> <frame name="notinewmail" noresize="" scrolling="NO" src="notinewmail.cgi"/> </frameset> <noframes> <body bgcolor="#FFFFFF" text="#000000"> </body> </noframes> </html>
該当のソースコード
python
1import requests 2from bs4 import BeautifulSoup 3import re 4import pandas as pd 5 6USER = "*********" 7PASS = "*********" 8 9# 1.ログインページにアクセスする 10url_login = "https://web-m.cc.oita-u.ac.jp/cgi-bin/index.cgi" 11session = requests.session() 12# ログインページへのアクセス完了 13req_before_login = session.get(url_login) 14 15# ログインするための情報を準備する 16login_data = { 17 "domain": 'oita-u.ac.jp', 18 "ismultisite": '', 19 "chglang": '', 20 "lang": '', 21 "id": USER, 22 "pwd": PASS,} 23 24# ログインするためにトークンが必要となるため情報を取得 25bs = BeautifulSoup(req_before_login.text, 'html.parser') 26csrf_token = bs.find( 27 attrs={'name':'不明'}).get('value') 28login_data['不明'] = csrf_token 29 30# 2. ログインページで認証を行い、管理者ページへ遷移する 31req_after_login = session.post(url_login, data=login_data) 32 33# 3. 認証完了後のページで他ページへ遷移を行う 34url_group = 'https://web-m.cc.oita-u.ac.jp/cgi-bin/htmlparse.cgi?html=frame.html' 35req_group = session.get(url_group) 36soup = BeautifulSoup(req_group.text, 'lxml')
試したこと
他の大学関連サイトでは「logintoken」という名前のものが見つかったので上記のコードでうまくできたのですが、当サイトではそれらしきものが見当たらず、解決できませんでした。
補足情報(FW/ツールのバージョンなど)
MacOS Monterey バージョン 12.5.1
当該サイトの利用規約は確認いたしました。
スケジュール実行で1時間に一度、接続する予定です。

スクレイピングって安易に書いてるけど、対象サイトの管理者に許可は得ているのですか? クローラを作って某図書館のサイトにアクセスしたら業務妨害で逮捕された事例もありますので、安易に考えない方がいいですよ。
コメントありがとうございます。
librahack 事件のことですね。
利用規約等は事前に確認しております(補足情報に追加しておくべきでした、申し訳ございません)。
また、サーバーへの負荷はできるだけ軽減して行う予定です(1時間に1回のHTTP接続*)。
※大学のメールサイトを開いて確認するのに時間がかかっていたので、1時間に1度スクレイピングするようにして、LINEに自動送信されるようなコードを作ろうと思っております。
スクレイピング、慎重に行いたいと思います、ご指摘のほどありがとうございました。

> 利用規約等は事前に確認しております(補足情報に追加しておくべきでした、申し訳ございません)。
それで許可されたことになるのか分かりませんが、許可されているなら質問本文にその旨書いておいてはいかがですか。
でも・・・ どこの誰だかわからない人が「クローラ作ってアクセスしていいですか?」と聞いてきたら、No という答えが返ってくると思うのですが。悪意が無くてもミスで無限ループで要求がかかるかもしれませんし。
おっしゃる通りですね・・・。
できるだけミスは起こらないように、、とは思っているのですが、絶対に起こらないとは限らないですね・・。
コードを実行する前に、念の為、他の人にチェックしてもらうように頼んだりしてみます・・。
> それで許可されたことになるのか分かりませんが、許可されているなら質問本文にその旨書いておいてはいかがですか。
補足情報に追記しておきました。

回答1件
あなたの回答
tips
プレビュー