今日、ChatGPTにいろいろ教わりながら作ったpythonコードを記事にします。
せっかくだしね。実物とはちょっと変えています。機密保持のために。
Pythonを使ってウェブサイトにログインし、指定したページのコンテンツを取得するコードです。requestsライブラリとBeautifulSoupを使用して、セッション管理とHTML解析を行います。
必要なライブラリのインストール
まずは、必要なライブラリをインストール
pip install requests beautifulsoup4
コードの説明
コードの中身はこんな感じです
import requests from bs4 import BeautifulSoup def login_and_fetch_content(login_url, target_url, credentials): # セッションを開始して、リクエストを管理 with requests.Session() as session: headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } # ログインページにGETリクエストを送信してクッキーを取得 session.get(login_url, headers=headers) # ログインページにPOSTリクエストを送信してログイン login_response = session.post(login_url, data=credentials, headers=headers) # ログインが成功したか確認 if login_response.status_code == 200: print("Login response preview:", login_response.text[:500]) # 最初の500文字のみ表示 # ログイン成功の確認 if "Logout" in login_response.text or "Dashboard" in login_response.text: print("Login successful") # ターゲットページからコンテンツを取得 response = session.get(target_url, headers=headers) if response.status_code == 200: print(f"Successfully fetched the content from {target_url}") return response.text else: print(f"Failed to fetch the content. Status code: {response.status_code}") return None else: print("Login failed: No expected text found in response") return None else: print(f"Failed to log in. Status code: {login_response.status_code}") return None def main(): # ログインページとターゲットページのURL login_url = 'http://sample.database.com/index.php' target_url = 'http://sample.database.com/index.php?s=idx&prod=PPAP' # ログインに必要な認証情報 credentials = { 'user_name': 'user_name', 'password': 'password', } # ログインしてコンテンツを取得 html_content = login_and_fetch_content(login_url, target_url, credentials) if html_content: # 取得したHTMLコンテンツを解析 soup = BeautifulSoup(html_content, 'html.parser') print(soup.prettify()[:500]) # 取得したコンテンツの最初の部分を表示 if __name__ == '__main__': main()
コードの詳細説明
ライブラリのインポート
requests: HTTPリクエストを送信するためのライブラリ
BeautifulSoup: HTMLやXMLファイルを解析するためのライブラリ
login_and_fetch_content関数
login_url: ログインページのURL
target_url: ログイン後にアクセスするターゲットページのURL
credentials: ログインに必要な認証情報(ユーザー名とパスワード)
セッション管理
requests.Session(): セッションを開始して、同じセッション内でのリクエストを管理
session.get(login_url): ログインページにGETリクエストを送信してクッキーを取得
session.post(login_url, data=credentials): 認証情報を送信してログイン
ログイン確認
ログイン後のレスポンスに「Logout」または「Dashboard」が含まれているか確認
成功した場合、ターゲットページにアクセスしてコンテンツを取得
HTML解析
BeautifulSoupを使用して取得したHTMLコンテンツを解析し、見やすい形式で表示
こんなところでしょうかね
コメント