Open NureongKim opened 1 month ago
왜인지 몇 개는 오류 나서 다 끌고 오지는 못하지만 아래 코드로 실행하면 9405개 중에 8927개는 가져오네요.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import pandas as pd
import time
# ChromeDriver 경로 설정
chrome_driver_path = "C:/Users/chromedriver.exe" # 여기에 chromedriver 경로 설정. chromedriver 설치 방법 참고
service = Service(chrome_driver_path)
# WebDriver를 사용하여 브라우저 실행
driver = webdriver.Chrome(service=service)
# 데이터를 저장할 리스트 초기화
stocks_data = []
# 페이지를 순회하며 데이터 수집 (1페이지부터 314페이지까지)
for page in range(1, 315):
# Investing.com 스크리너 페이지로 이동 (페이지 번호 포함)
url = f"https://www.investing.com/stock-screener/?sp=country::5|sector::a|industry::a|exchange::a|equityType::ORD|last::a|price::a&page={page}"
driver.get(url)
# 페이지가 로드될 때까지 대기 (필요에 따라 sleep 시간을 조정하세요)
time.sleep(5)
# 테이블을 찾음
try:
table = driver.find_element(By.XPATH, "//*[@id='screenerTableWrapper']/table/tbody")
# 테이블의 모든 행을 가져옴
rows = table.find_elements(By.TAG_NAME, "tr")
# 테이블의 각 행에서 데이터 추출
for row in rows[1:]:
# th 태그에서 'Company' 데이터를 가져옴
company_data = row.find_element(By.TAG_NAME, "th").text.strip()
# \n을 기준으로 Symbol과 Name을 분리
symbol, name = company_data.split("\n")
# 나머지 열 추출
cols = row.find_elements(By.TAG_NAME, "td")
stock = {
"Name": name.strip(),
"Symbol": symbol.strip(),
"Exchange": cols[1].text.strip(),
"Sector": cols[2].text.strip(),
"Market Cap": cols[4].text.strip()
}
stocks_data.append(stock)
print(f"Page {page} scraped successfully")
except Exception as e:
print(f"Error on page {page}: {e}")
# WebDriver 종료
driver.quit()
# 데이터프레임으로 변환
global_ticker = pd.DataFrame(stocks_data)
# 데이터프레임 출력
global_ticker
안녕하세요. 너무 자주 질문드리는 것 같아 죄송할 따름입니다. 나름대로 해결해보려고 시도했는데 잘 안 돼서 문의드리게 되었습니다.
인베스팅닷컴 홈페이지가 많이 변경돼서 기존 11.2 티커 수집하기 코드와 많은 부분이 다른 것을 확인했습니다. 국가명 가져오는 부분부터 다른 것을 확인했는데 혹시 전 종목 크롤링 코드를 어떻게 수정해야 할 지 여쭙고 싶습니다.