작성
·
200
0
안녕하세요 강사님 수업 잘 듣고 있습니다
한빛출판사 사이트에 로그인하고 마이페이지에서 데이터 가져오는 실습에서
강의 자료에서 아이디 비번 부분만 바꾸고 실행해도
print(res.raise_for_status())을 출력하면 None이 나옵니다
제가 자바스크립트를 몰라서 어떻게 해야할 지 모르겠습니다.
홈페이지가 바뀐건가요? 저만 안 되는걸까요..?
------------------------------------------------------------
import requests
from bs4 import BeautifulSoup
login_url = 'http://www.hanbit.co.kr/member/login_proc.php'
crawl_url = 'http://www.hanbit.co.kr/myhanbit/myhanbit.html'
session = requests.session()
params = dict()
params['m_id'] = '제 아이디로 바꿨습니다'
params['m_passwd'] = '제 비번으로 바꿨습니다'
res = session.post(login_url, data=params)
print(res.raise_for_status()) # 작동하는지 확인하기위해 출력했는데 None이 나옵니다
# print (res.headers)
# print (session.cookies.get_dict())
res = session.get(crawl_url)
soup = BeautifulSoup(res.content, 'html.parser')
data = soup.select('dl.mileage_section1 > dd > span')
for item in data:
print (item.get_text())
답변 1
1
안녕하세요. 사이트가 변경되었네요.
아무래도 수강자분들께 보다 도움이 되고자, 제 강의가 실전 사이트 예제를 많이 보여드리려했는데요. 수강자분들께서 많이 늘어나다보니, 사이트 크롤링 연습을 많이 하셔셔, 관련 사이트 운영자분들께서 부담이 되시는 것 같습니다.
해당 사이트가 크롤링을 강하게 막아놓은 상태라서, 해당 사이트는 부득이 중급 크롤링 강좌(현존 최강 크롤링 기술: Scrapy와 Selenium 정복) 에서 설명드린 selenium 기술을 써야 할 것 같습니다. 관련 기술은 별도 프로그램 설치부터 시작해서 내용 자체가 중급에 해당되는 많은 설명이 필요한 부분이라서요. 우선 해당 로그인이 필요한 사이트 강의 내용과, 다음 selenium을 사용한 코드는 참고로만 부탁드립니다. (크롬 드라이버를 적절히 설치하셔야 동작하는 프로그램이라서요.)
감사합니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.hanbit.co.kr/member/login.html')
my_id = '아이디'
my_pw = '패스워드'
# 다음 세 줄이 기본 패턴 코드: ID 넣기
# WebDriverWait(driver, 최대 기다리는 시간).until(EC.presence_of_element_located((By.CSS_SELECTOR, CSS Selector 태그)))
login_id = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#m_id")))
login_id.clear() # 입력창의 경우, 사전에 작성되어 있는 텍스트를 삭제
login_id.send_keys(my_id) # 내가 넣고자 하는 텍스트 삽입
# 다음 세 줄이 기본 패턴 코드: 패스워드 넣기
login_pw = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#m_passwd")))
login_pw.clear()
login_pw.send_keys(my_pw)
# 버튼 클릭시는 다음 두 줄: 로그인 버튼 누르기
button = WebDriverWait(driver, 3).until(EC.presence_of_element_located((By.CSS_SELECTOR, "#login_btn")))
button.click()
time.sleep(1) # 로그인 후의 페이지 로딩을 위해, 1초정도 기다리면 좋음
driver.get('https://www.hanbit.co.kr/myhanbit/myhanbit.html')
coin = driver.find_element_by_css_selector('div.sm_mymileage > dl.mileage_section1 dd')
print (coin.text)
driver.quit()