로그인된 웹 사이트에서 복제
개시하다
접속한 사이트의 정보를 커튼으로 얻는 것은 좀 힘들기 때문에 자신의 비망록도 일찌감치 썼다.
이번에는 이유가 있어서
Selenium
사용할 수 없어서requests
와BeautifulSoup
.절차.
로그인에 필요한 매개 변수 확인
먼저 로그인하기 전의 URL을 찾아서 HTML 요소를 확인합니다.
주의
import requests
from bs4 import BeautifulSoup
# ログイン前のurl
login_url = "{url}"
response = requests.get(login_url)
soup = BeautifulSoup(response.text, 'lxml')
soup
의 탭 섹션이 레이블에 저장된 값은
form
입니다.매개변수 키는 실제 입력 값을 값으로 설정합니다.
input
↓<form action="https://~" class="mt-3" id="login" method="post">
<input id="anchor" name="anchor" type="hidden" value=""/>
<script>document.getElementById('anchor').value = location.hash;</script>
<input name="logintoken" type="hidden" value="qCiEJuqAlux7qVABUVgqAmBfkCUjLcNT"/>
<div class="form-group">
<label class="sr-only" for="username">
ユーザ名
</label>
<input autocomplete="username" class="form-control" id="username" name="username" placeholder="ユーザ名" type="text" value=""/>
</div>
<div class="form-group">
<label class="sr-only" for="password">パスワード</label>
<input autocomplete="current-password" class="form-control" id="password" name="password" placeholder="パスワード" type="password" value=""/>
</div>
<div class="rememberpass mt-3">
<input id="rememberusername" name="rememberusername" type="checkbox" value="1"/>
<label for="rememberusername">ユーザ名を記憶する</label>
</div>
<button class="btn btn-primary btn-block mt-3" id="loginbtn" type="submit">ログイン</button>
</form>
로그인
session = requests.session()
payload = {
"username": "{ユーザー名}",
"password": "{パスワード}",
"rememberusername": 1,
"loginbtn": "ログイン"
}
r = session.post(login_url, data=payload)
soup = BeautifulSoup(r.content, "lxml")
로그인을 위해서는 로그인 단추를 누르는 동작을 표시하는 파라미터가 필요합니다name
는 탭에 포함된 키soup
와 botton
의 값을 포함한다.이
id
에는 로그인 후 사이트 정보를 나타내는 HTML이 저장되어 있습니다.끝맺다
로그인에 필요한 매개 변수를 찾기가 매우 어렵다😓
같은 상황에 처한 사람을 도울 수 있다면, 나는 매우 기쁠 것이다!
Reference
이 문제에 관하여(로그인된 웹 사이트에서 복제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mamekko/articles/ea44fe8a77da7c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)