#----------------selenium 설정
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By #find_element 함수
chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach", True)
#페이지가 자동으로 꺼지지 않게 해줌
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
#크롬 버전을 자동으로 맞춰줌
#----------------bs4 설정
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
from urllib.request import urlopen
from bs4 import BeautifulSoup
from time import sleep
url = 'https://prstaff.sogang.ac.kr/prstaff/976.html'
driver.get(url)
sleep(2)
html = driver.page_source
bs = BeautifulSoup(html, 'html.parser')
#예시 목차 숫자
number_start = 7894
number_end = 7919
n = 1
iframe = driver.find_element(By.XPATH, '//*[@id="iframe_main"]')
driver.switch_to.frame(iframe)
while(1) :
str_xpath = driver.find_element(By.XPATH, '/html/body/div/div/div[2]/div/table/tbody/tr[2]/td[1]')
str = str_xpath.text
#print(str)
str = int(str)
if str <= number_end and str >= number_end - 25 :
break
else :
driver.find_element(By.XPATH, '/html/body/div/div/div[4]/div/div/div/div/div[2]/a[%d]/span' %n).click()
n = n+1
html = driver.page_source
bs = BeautifulSoup(html, 'html.parser')
오늘은 이 정도로만 구현하였다. 나머지는 이따 새벽이나 밤에 진행하도록 하겠다.
while(1) :
str_xpath = driver.find_element(By.XPATH, '/html/body/div/div/div[2]/div/table/tbody/tr[2]/td[1]')
str = str_xpath.text
#print(str)
#목차 페이지에서 가장 최근 올라온(가장 상단의) 게시물의 번호를 str 에 저장하였다.
str = int(str) #이건 셀레네움을 사용하여 숫자로 데이터를 뽑아내는 방법을 몰라 강제로 string을 int로 바꿔주었다.
if str <= number_end and str >= number_end - 25 :
break
#만약 내가 찾고 싶은 숫자의 범위가 이 페이지 안에 있으면 break
#한 페이지 당 26개의 게시물이 있어 범위를 저렇게 잡아주었다.
else :
driver.find_element(By.XPATH, '/html/body/div/div/div[4]/div/div/div/div/div[2]/a[%d]/span' %n).click()
n = n+1
html = driver.page_source
bs = BeautifulSoup(html, 'html.parser')
#만약 없다면 다음 페이지로 넘어가기
'cs > 크롤링' 카테고리의 다른 글
[크롤링] iframe (2) | 2023.03.27 |
---|---|
[크롤링] 하늬가람 페이지 크롤링해보자 (0) | 2023.03.20 |
[크롤링] selenium 안녕 ,,? (0) | 2023.03.20 |
[크롤링] 네이버 홈화면의 메뉴를 가져와보자 (0) | 2023.03.13 |
[크롤링] 할리스 매장 위치 정보 크롤링 해보기 (pandas / del[:]) (0) | 2023.03.08 |