pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
browser = webdriver.Chrome()
다음 코드를 보시면 url.format 태그를 사용하여 url의 빈 곳 {}에 input(검색어)을 입력하도록 하였습니다.
최종적으로 브라우저는 new_url의 값을 얻습니다.
search_name = input("검색어")
url = "https://www.dbpia.co.kr/search/topSearch?searchOption=all&query={}"
new_url = url.format(search_name)
browser.get(new_url)
links = browser.find_elements(By.CLASS_NAME, 'thesis__link')
#links 태그는 browser 안에서 elements(요소들)를 find(찾기)하는 코드입니다.
#thesis__link의 CLASS_NAME을 찾습니다.
import time
time.sleep(3)
#작업량의 오류가 발생하는 것을 방지하기 위해 속도를 설정했습니다.
link_list = []
for link in links:
link_list.append(link.get_attribute('href'))
# 반복문 for를 사용하여 links 태그들을 in함수를 사용하여 link에 포함시킵니다.
# link 안에서의 'href'들의 코드를 적용시키기 위해 attribute태그를 사용하였고
# 데이터들이 link_list=[]안에 들어가도록 하였습니다.
for link in link_list:
browser.get(link)
#반복문 for를 사용하여 link_list의 값들을 link로 지정하였고
#브라우저가 해당 링크들을 얻을 수 있도록 하였습니다.
content = ""
try:
content = browser.find_element(By.CLASS_NAME, "abstractTxt")
except:
content = browser.find_element(By.CLASS_NAME, "noData")
#try문과 except문을 사용하여 요소값이 있으면 실행하고 없으면 오류가 발생하는 점을 해결했습니다.
print(content.text)
browser.get("https://www.dbpia.co.kr/search/topSearch?searchOption=all&query=%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5")
# 브라우저에 링크값을 설정했습니다.
page = int(input("크롤링 하고 싶은 페이지 수를 입력하세요."))
#page에 input태그를 적용하여 값을 넣도록 하였습니다.
import time
for i in range(2,page+1):
xpath = '//*[@id="pageList"]/a[{}]'.format(i)
time.sleep(3)
browser.find_element(By.XPATH, xpath).click()
#반복문 for를 사용하였고 range범위를 정하여 2~page(입력값)+1를 하도록 하였습니다.
#xpath에 XPATH주소를 적용하였고 format(i)태그를 사용하여 입력값이 {}에 들어가서 XPATH의 주소가 값에 의해 이동되도록 하였습니다.
#브라우저의 element요소(XPATH,xpath)를 클릭하도록 했습니다.
browser.get("https://www.dbpia.co.kr/search/topSearch?searchOption=all&query=%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5")
page = int(input("크롤링 하고 싶은 페이지 수를 입력하세요."))
link_list = []
import time
for i in range(2,page+1):
links = browser.find_elements(By.CLASS_NAME, 'thesis__link')
for link in links:
link_list.append(link.get_attribute('href'))
xpath = '//*[@id="pageList"]/a[{}]'.format(i)
time.sleep(3)
browser.find_element(By.XPATH, xpath).click()
print(link_list)
for link in link_list:
browser.get(link)
content = ""
try:
content = browser.find_element(By.CLASS_NAME, "abstractTxt")
except:
content = browser.find_element(By.CLASS_NAME, "noData")
print(content.text)