고도몰 사이트 자동로그인을 만들려고 하는데, 잘 안되네요.
이것저것 검색해서 해 봤는데요.
계속 실패만 하네요.
아시는 분께서는 좀 도와주시면 감사하겠습니다.
<code>
import requests
from bs4 import BeautifulSoup
# 네이버 로그인
url = "http://www.emcenter.co.kr/member/login.php"
my_data = {"loginId" : "kokoro", "loginPwd" : "kokoro1234"}
## 로그인 요청
session = requests.session()
response = session.post(url, data = my_data)
response.raise_for_status()
## 로그인 확인을 위한 마이페이지 출력
res = requests.get("http://www.emcenter.co.kr/mypage/index.php")
soup = BeautifulSoup(res.text, 'html.parser')
print(soup)
</code>
참고로, 임시로 만든 계정입니다.
아래는 로그인처리만 셀레니움으로 한 코드입니다
-------------
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
url = "http://www.emcenter.co.kr/member/login.php"
my_data = {"loginId" : "kokoro", "loginPwd" : "kokoro1234"}
## 로그인 요청
options = webdriver.ChromeOptions()
options.add_argument('headless')
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()),
options=options
)
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(url)
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#formLogin #loginId"))).send_keys(my_data.get('loginId'))
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#formLogin #loginPwd"))).send_keys(my_data.get('loginPwd'))
WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#formLogin button[type=submit]"))).click()
# 메인 이동 확인
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".main_visual")))
cookies = driver.get_cookies()
driver.quit()
with requests.session() as session:
for cookie in cookies:
session.cookies.update({cookie.get('name'): cookie.get('value')})
response = session.post(url, data = my_data)
response.raise_for_status()
## 로그인 확인을 위한 마이페이지 출력
res = session.get("http://www.emcenter.co.kr/mypage/index.php")
soup = BeautifulSoup(res.text, 'html.parser')
print(soup)
크롤링 용도로 쓰지 말라지만 Selenium이 거의 유일한 방법입니다.
셀레니움 + BeautifulSoup 조합으로 쓰세요.