안녕하세요. driver.find_element(By.CSS_SELECTOR, "#id").click() 아이디 패스워드부분을 작성하실때는 #id 를 사용하시고 다른 버튼 및 선택 부분은 .class를 사용하시는데 차이가 있을까요? 개발자도구에서 ID 부분에서 ID도 있지만 class도 있어서요. ID가 명시되어 있다면 ID로 하면되고 그렇지 않다면 Class를 넣어서 사용하면 될까요?
내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
subject_element[9].find_element(By.CSS_SELECTOR," a.link _service > span.service_name").text.strip() 위 코드를 실행하면 잘 실행이 되지만 service_list = [] subject_element = WebDriverWait(driver, 10).until( EC.presence_of_all_elements_located( (By.CSS_SELECTOR, "ul.shortcut_list > li.shortcut_item") ) ) for e in subject_element : service_title = e.find_element(By.CSS_SELECTOR," a.link _service > span.service_name").text.strip() service_list.append(service_title) service_list 해당 코드를 실행하면 span태그를 못 읽습니다. a태그 안에 span태그가 있는 건 확실합니다.
내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
import requests res = requests.get(" https://www.marketwatch.com/investing/stock/aapl/financials/cash-flow/quarter ") res.text 위 코드를 실행하니 <html lang="en"><head><title> marketwatch.com </title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script data-cfasync="false">var dd={\'rt\':\'c\',\'cid\':\'AHrlqAAAAAMAh8Qu9qw4o5AAeZGKYw==\',\'hsh\':\'D428D51E28968797BC27FB9153435D\',\'t\':\'bv\',\'qp\':\'\',\'s\':47891,\'e\':\'c294f466cf1fc364ded3ee7825542c1f3981642dddce927e5f11a3c23d8562c7\',\'host\':\' geo.captcha-delivery.com \',\'cookie\':\'cKcsNHb~i3N0ubHsvh1SU41idmHgtXrG3MIr84AsSXM8dmhMHFBZ_SDJgc_fPcFDnPl66WhkZTCTtkxK4IxLoKIgEyZat25gsG5q7IDMkMwFhpZEai47m4N4I1c0WP9G\'}</script><script data-cfasync="false" src=" ">https://ct.captcha-delivery.com/c.js"></script></body></html> 이렇게 출력이 나왔습니다. 구글링을 해보니 해당 marketwatch 사이트에서 크롤링을 막고있는 거 같더라구요. 이런 상황에서는 requests를 통해서는 해당 강의를 진행하지 못한다는 거 맞나요??
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Pyside6 배경색이 디폴트가 다크모드로 나오는것 같은데 너무 어두워서 밝게 하고 싶으나 방법을 잘 모르겠어요 색상을 변경하고 싶은데 어떻게 해야 하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서는 너무 짧게 지나가서, 해결을 못하고 있습니다. 컴알못이라,, 자세히 설명 부탁드립니다 ㅠ,.ㅠ... 프로젝트 폴더를 06.GUI폴더로 설정 =>어디서 어떻게 클릭해서 설정하는지 모르겠습니다. 터미널에서 해당 명령어를 실행 "pyside6-uic ui -o py"=>1번부터가 막혀서 실행을 못하고 있습니다.
상세페이지 href속성을 찾아 기존페이지 url?상세페이지 url을 적용하여 실습을 성공해 오다가 난관에 부딪혔습니다. html속성값을 보니 아래와 같이 되어 있고 url에 붙이거나 해도 페이지가 로드 되지 않아 어려움을 겪고 있습니다. <a href="Javascript:view_content('869');">처리 일정 문의 드립니다.</a> 위와같은 href가 나타날때는 어떻게 상세페이지로 이동해야 하는지 궁금하고 이럴때 혹시 우회할 수 있는 대안이 있다면 알고 싶어요
네이버 지식인 여러페이지 정적 크롤링은 강의에 있어서 따라하니 잘 되는데 동적 페이지 크롤링인 네이버 쇼핑은 for i in 코드를 넣으니 넘어가지지가 않네요 ㅜㅜ 동적 페이지 크롤링인 네이버 쇼핑 여러페이지 넘어갈때는 다른 코드를 작성해야하는걸까요? 네이버 지식인 여러페이지 크롤링 할 때처럼 하니 페이지가 안넘어가지네요...
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
안녕하세요 제공해주신 깃허브 홈페이지 url의 경우는 페이지가 넘어갈 때마다 'url/page{page_num}' 형식으로 변하게 되는데 제가 살펴본 네이버 카페의 경우(링크 아래 첨부)는 페이지 수를 넘겨도 페이지 수가 변하지 않았습니다. 네이버 카페 url: https://cafe.naver.com/cantsb 혹시 이러한 경우 페이지 수에 따른 크롤링을 어떻게 하는지 궁금합니다.
수업을 적용하며 크롤링 연습을 하고 있는데, 웹 크롤링 대상중 웹에디(smart_editor2) 안의 텍스트를 크롤링하는 방법이 궁금합니다. 셀레니움을 활용하여 적용하고 있는데 웹에디터는 접근이 잘 안되고 접근이 된것 같은데 텍스트가 출력되지 않습니다 어떠헥 해야 할지 모르겠어서 질의 드려요 외부 접근되지 않는 사이트이고 아이디 비번은 마스킹 처리한 코드는 아래와 같습니다. 결국 아래 부분이 문제인것 같은데 에디터 내 텍스트 추출 방법을 몰라 문의드려요 try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from urllib.parse import urlencode # URL 파라미터 추가용 import time import random import openpyxl import requests from bs4 import BeautifulSoup from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC newscralling =[] import pyautogui import pyperclip #크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager # #브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service = service) # 웹페이지 해당 주소 주소이동 driver.implicitly_wait(2) #웹페이지가 로딩 될때까지 5초 대기 driver.maximize_window() driver.get("https://OOO") #아이디 입력창 id = driver.find_element(By.CSS_SELECTOR, ".submitLogin.text:nth-of-type(1)") id.click() pyperclip.copy("id") pyautogui.hotkey("ctrl", "v") time.sleep(0.3) # id.send_keys(Keys.TAB) # #비밀번호 입력창 직접입력 # time.sleep(7) pw = driver.find_element(By.CSS_SELECTOR, ".login ul li:nth-of-type(2) input") pw.click() # pw.send_keys("비밀번호") pyperclip.copy("pass") pyautogui.hotkey("ctrl", "v") #로그인 버튼 login_btn = driver.find_element(By.CSS_SELECTOR, ".btnLogin") login_btn.click() time.sleep(1) params = { "counselProcStatus": 2, "page": 1, "pageSize": 2 } #SSL인증 비활성화에 대한 경고메시지 삭제 import urllib3 urllib3.disable_warnings() qna_list_url = "https://OOO"+ urlencode(params) driver.get(qna_list_url) html = driver.page_source soup = BeautifulSoup(html, 'html.parser') articles = soup.select(".boardListStyle table tbody tr") import openpyxl from datetime import datetime wb = openpyxl.Workbook() ws = wb.active ws.title = "온라인상담_접수중" ws.append(["date", "category", "title", "quest", "answer", "man", "status"]) crowling = [] for article in articles: title = article.select_one(".alignLeft a").text date = article.select_one(".boardListStyle table tbody td:nth-of-type(4)").text category = article.select_one(".boardListStyle table tbody td:nth-of-type(2)").text status = article.select_one(".boardListStyle table tbody td:nth-of-type(7)").text link = 'https://OOO/'+ article.select_one(".alignLeft a").attrs['href'] title_link = f'=HyPERLINK("{link}", "{title}")' #상세 페이지 요청 driver.get(link) time.sleep(2) # 페이지 로딩 대기 detail_html = driver.page_source detail_soup = BeautifulSoup(detail_html, 'html.parser') quest = detail_soup.select_one(".con_txt").text try: driver.switch_to.frame("iframe4dummy") # 🔹 iframe 내부로 이동 # 🔹 iframe 내부에서 특정 클래스("se2_inputarea")를 가진 body 태그 찾기 # 🔹 iframe 내부의 `body` 태그에서 텍스트 가져오기 body = driver.find_element(By.CSS_SELECTOR, "body") answer = body.text.strip() print("✅ HTML 에디터 내용:", answer) # 🔹 다시 원래 페이지로 복귀 driver.switch_to.default_content() except Exception as e: print("❌ iframe 전환 실패 또는 body 태그를 찾을 수 없습니다:", str(e)) #answer = detail_soup.select_one(".se2_input_area.husky_seditor_editing_area_container iframe").text man = detail_soup.find('th', string="작성자").find_next_sibling().text crowling = ws.append([date, category, title, quest, answer, man, status]) driver.back() # 브라우저에서 '뒤로 가기' 실행 print(date, category, title, quest, answer, man, status) now = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"온라인상담_{now}.xlsx" wb.save(filename)
기초사용법 부분 코드 그대로 따라했는데 실행이 안되네요 ㅜㅜ 이전에 py파일로 변환한다고 폴더 경로를 06.gui프로그래밍 경로로 했다가 다시 파이썬 크롤링 경로로 설정 한다고 했는데 제대로 안된걸까요? 그래서 실행이 안되는건가 싶어서요! 제가 터미널 설정을 잘 못해서 실행이 안되는건지 궁금합니다!
파이사이드 설치및 사용법 영상에 나온대로 입력했는데도 컴파일 파일로 변환이 안되네요~ 프로젝트 폴더를 gui폴더로 하라고 하셔서 클릭 해서 했는데 제대로 설정이 안된걸까요? 두번째 사진 보면 스타트 코딩님이랑 다르게 06.GUI프로그래밍이 안나오네요! 혹시 이걸 제대로 설정 못해서 안되는걸까요? 컴파일 파일로 변환 안되면 vs 코드 재실행하고 파이썬 삭제하고 파이사이드 재설치 하라고 하셔서 했는데도 계속 안되네요 ㅜㅜ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 무한스크롤을 하면 하단에 없던 상품이 동적 로딩 되지만 상단 상품들이 사라지는 경우 강의에서 처럼 스크롤을 끝까지 내린다음이 아니라 스크롤을 조금씩 내리면서 상품을 담아야 할까요?