강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ecomarine님의 프로필 이미지
ecomarine

작성한 질문수

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

로그인 후 url 가져오기 실패

작성

·

709

1

제가 연습삼아 관심을 가지고 있는 사이트에 자동로그인을 했습니다.

그 후 내용을 가져오려니  아래와 같이 오류가 뜹니다.

이건 어떤 경우일까요? 

답변 3

1

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

안녕하세요.

코딩을 가장 쉽게 알려주는 크리에이터 스타트코딩입니다. 

 

1. 자동로그인을 어떻게 구현한 것일까요?

2. 전체 소스코드를 보여주시면 감사하겠습니다. 

3. 오류 메시지가 제대로 확인되지 않습니다. 

 

감사합니다. 

좋은 하루 되세요 ^^

- 스타트코딩 드림.

 

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

아.. 뭔가 이제 이해가 될 것 같은데 ,

셀레니움으로 로그인을 한 후에 URL만 가져와서, 크롤링을 requests 로 시도 했군요.

 

이렇게 하면 로그인이 안된 상태로 간주하고 오류가 납니다.

셀레니움으로 로그인을 한 브라우저에서,

셀레니움으로 크롤링을 하셔야 합니다.

 

driver.find_element(By.CSS_SELECTOR, "선택자").text

이런식으로 말이죠

 

 

0

ecomarine님의 프로필 이미지
ecomarine
질문자

코드는 다음과 같습니다.

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.action_chains import ActionChains

from selenium.webdriver.common.keys import Keys

import pyperclip

import pyautogui

import requests

from bs4 import BeautifulSoup as bs

# 자동로그인 한 코드입니다.

# 셀레니움 불러오기

driver = webdriver.Chrome('D:\crawling\chromedriver.exe')

# 페이지 로그인

driver.implicitly_wait(5)

driver.get("https://mr-seo.co.kr")

# driver.get("https://www.naver.com")

delay = 1

driver.implicitly_wait(delay)

driver.find_element(By.ID, 'am_id').click()

user_id = pyautogui.prompt("아이디 입력")

pyperclip.copy(user_id)

ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()

driver.implicitly_wait(delay)

driver.find_element(By.ID, 'am_pwd').click()

user_pwd = pyautogui.prompt("패스워드 입력")

pyperclip.copy(user_pwd)

ActionChains(driver).key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform()

driver.implicitly_wait(delay)

driver.find_element(By.TAG_NAME, '#loginBox > form > div > ul > li.login_btn > input[type=image]').click()

# 자동로그인

# 그 후 주소창의 url을 가져와서 테스트 삼아 파싱을 하면 위와 같은 오류가 뜹니다.

url = "https://mr-seo.co.kr/mr_product/list?rScale=100&sale_site_code%5B%5D=023&sale_site_code%5B%5D=068&sale_site_code%5B%5D=134&sale_site_code%5B%5D=286&sale_site_code%5B%5D=475&sale_site_code%5B%5D=606&sale_site_code%5B%5D=607&sale_site_code%5B%5D=636&sale_site_code%5B%5D=649&dateType=ui_create_time&sdate=2022-01-14&edate=2022-04-14&is_custom=&coupang_info_category=&coupang_listCategory1=-&coupang_listCategory2=-&coupang_listCategory3=-&coupang_listCategory4=-&coupang_listCategory5=-&coupang_listCategory6=-&coupang_listCategory7=-&is_pay=N&commerce=&update_status=&is_lock=-1&searchKey=ui_title&searchWord="

response = requests.get(url)    

soup = bs(response.text, 'html.parser')

print(soup)

ecomarine님의 프로필 이미지
ecomarine
질문자

id와 password 필요한가요? 

이 사이트는 하단에 iframe으로 다시 또 데이터를 불러옵니다.

헤메면서 해볼려고 했는데....  시작부터 안되네요.

 

셀레니움으로 연 브라우져를 일반 브라우저 처럼 사용해도 문제가 없나요?

만일 여러 사이트 자동로그인 하고, 동시 여러개 뛰워 둬서 작업을 할 계획이라면 

그냥 코드 실행 시키고 셀레니움으로 연 크롬창에서 작업을 해도 문제는 없죠?

 

ecomarine님의 프로필 이미지
ecomarine

작성한 질문수

질문하기