작성
·
308
0
셀레니움 크롬 드라이버를 배우고 웹하드 크롤링을 하려고 하는데 예기치 못한 상황이 생겼습니다...
스마트파일이라는 사이트를 크롤링하려고 하는데 일단 크롬드라이버로 사이트에 접속을하고
원하는 카테고리의 정보를 (페이지 번호, 개수 등등)을 넣어서 beautiful soup로 받아오려고 했지만 특정 카테고리에 가서 url을 그대로 복사하고 브라우저에서 복사한 url을 그대로 입력후 접속을 하니까 smart file이라는 글자만 나오고 자료가 나오지 않는 상황이 생깁니다..
그래서 뭔가 막아놨구나 생각해서 chrome driver로 카테고리를 클릭해서 들어가려고 코드를 짰는데 카테고리를 클릭하니까 구글로 이동이됩니다.
뭔가 되게 많이 막아놓은것같은데 자바스크립트 명령어로 클릭을 해봐도 동일한 결과가 나옵니다
어떻게 하면 좋을까요 부탁드립니다...
이것은 driver를 생성하는 모듈입니다
"""
크롬 드라이버 생성 및 설정 모듈
"""
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
# 크롬 드라이버 자동 업데이트
from webdriver_manager.chrome import ChromeDriverManager
def create_driver():
# 크롬 브라우저 꺼짐 방지
chrome_options = Options()
chrome_options.add_experimental_option('detach', True)
# 불필요한 에러 메시지 없애기
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
# 크롬 드라이버 최신 버전 설치
service = Service(executable_path=ChromeDriverManager().install())
# 드라이버 객체 생성
driver = webdriver.Chrome(service=service, options=chrome_options)
driver.service = service
driver.implicitly_wait(10)
driver.maximize_window()
return driver
이것은 크롬드라이버를 생성해서 크롤링을하려고 크롬드라이버로 접속해서 해당 url에 접속하는 모듈입니다
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
def execute_crawling(driver: webdriver.Chrome, url: str):
for i in range(2):
driver.get(url)
time.sleep(2)
if i == 0:
menu_book = driver.find_element(By.CSS_SELECTOR, '#wrap > div.wrap-nav-wrap > div > ul.depth1 > li.menutop_DOC.m9')
driver.execute_script("arguments[0].click();", menu_book)
time.sleep(1)
답변 1
0
동적으로 데이터를 가져오는 페이지 입니다.
셀레니움 말고 requests post 요청을 이용해서
크롤링해보세요
아래 통신에서 원하는 데이터를 가져올 수 있습니다.