質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

解決済

ログインつきサイトのスクレイピング

LEPIDOPTERA
LEPIDOPTERA

総合スコア2

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

1回答

0リアクション

2クリップ

596閲覧

投稿2022/10/01 00:51

編集2022/10/01 13:50

前提

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= &lt;!-- Error Occured : Failed to operate left operand --&gt; @if(&amp;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

import requests from bs4 import BeautifulSoup import re import pandas as pd USER = "*********" PASS = "*********" # 1.ログインページにアクセスする url_login = "https://web-m.cc.oita-u.ac.jp/cgi-bin/index.cgi" session = requests.session() # ログインページへのアクセス完了 req_before_login = session.get(url_login) # ログインするための情報を準備する login_data = { "domain": 'oita-u.ac.jp', "ismultisite": '', "chglang": '', "lang": '', "id": USER, "pwd": PASS,} # ログインするためにトークンが必要となるため情報を取得 bs = BeautifulSoup(req_before_login.text, 'html.parser') csrf_token = bs.find( attrs={'name':'不明'}).get('value') login_data['不明'] = csrf_token # 2. ログインページで認証を行い、管理者ページへ遷移する req_after_login = session.post(url_login, data=login_data) # 3. 認証完了後のページで他ページへ遷移を行う url_group = 'https://web-m.cc.oita-u.ac.jp/cgi-bin/htmlparse.cgi?html=frame.html' req_group = session.get(url_group) soup = BeautifulSoup(req_group.text, 'lxml')

試したこと

他の大学関連サイトでは「logintoken」という名前のものが見つかったので上記のコードでうまくできたのですが、当サイトではそれらしきものが見当たらず、解決できませんでした。

補足情報(FW/ツールのバージョンなど)

MacOS Monterey バージョン 12.5.1

当該サイトの利用規約は確認いたしました。
スケジュール実行で1時間に一度、接続する予定です。

デベロッパツールのスクリーンショット
イメージ説明

レスポンスヘッダのスクリーンショット
イメージ説明

イメージ説明

イメージ説明

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/10/01 04:46依頼された後にこの質問は修正されています

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

SurferOnWww

2022/10/01 01:33 編集

スクレイピングって安易に書いてるけど、対象サイトの管理者に許可は得ているのですか? クローラを作って某図書館のサイトにアクセスしたら業務妨害で逮捕された事例もありますので、安易に考えない方がいいですよ。
LEPIDOPTERA

2022/10/01 02:30 編集

コメントありがとうございます。 librahack 事件のことですね。 利用規約等は事前に確認しております(補足情報に追加しておくべきでした、申し訳ございません)。 また、サーバーへの負荷はできるだけ軽減して行う予定です(1時間に1回のHTTP接続*)。 ※大学のメールサイトを開いて確認するのに時間がかかっていたので、1時間に1度スクレイピングするようにして、LINEに自動送信されるようなコードを作ろうと思っております。 スクレイピング、慎重に行いたいと思います、ご指摘のほどありがとうございました。
SurferOnWww

2022/10/01 02:53

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

2022/10/01 03:44 編集

おっしゃる通りですね・・・。 できるだけミスは起こらないように、、とは思っているのですが、絶対に起こらないとは限らないですね・・。 コードを実行する前に、念の為、他の人にチェックしてもらうように頼んだりしてみます・・。 > それで許可されたことになるのか分かりませんが、許可されているなら質問本文にその旨書いておいてはいかがですか。 補足情報に追記しておきました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。