- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 유튜브 크롤링 중에 이렇게 코드를 돌리면 전립선암의 증상과 진단을 위한 검사는? [AMC 병법] 조회수 0회 날짜 없음 모든 결과가 조회수0회 날짜없음으로 가져와집니다ㅠㅠ 어디가 문제일까요? from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options import time from bs4 import BeautifulSoup # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메시지 없애기 chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"]) # 브라우저 생성 browser = webdriver.Chrome(options=chrome_options) url = "https://www.youtube.com/results?search_query=%EC%95%94" #웹페이지 해당 주소 이동 browser.implicitly_wait(5) #웹페이지가 로드될때까지 5초는 기다린다 browser.maximize_window() #화면 최대화 browser.get(url) #3번 스크롤하기 scroll_count = 3 i = 1 while True: #맨 아래로 스크롤을 내린다. browser.find_element(By.CSS_SELECTOR,"body").send_keys(Keys.END) #스크롤 사이에 페이지 로딩 시간 time.sleep(2) if i == scroll_count: break i += 1 #selenium - beautifulsoup 연동방법 html = browser.page_source soup = BeautifulSoup(html, 'html.parser') infos = soup.select("div.text-wrapper") for info in infos: #원하는 정보 가져오기 #제목 title = info.select_one("a#video-title").text try: #조회수 views = info.select_one("div#metadata-line > span:nth-child(1)").text #날짜 date = info.select_one("div#metadata-line > span:nth-child(2)").text except: views = "조회수 0회" date = "날짜 없음" print(title, views, date) browser.quit()
강의 들으며 똑같이 코드를 작성했습니다. 다만, 로캣배송 badge_rocket 까지 작성했을 때, 막상 홈페이지에 나와있는 순위와 비교를 하며 보니 일치하지 않고 순서가 뒤죽박죽 되어 나와 있습니다. 또한 화면 상에서는 광고 표시가 없지만, 막상 html을 살펴보면 search-product search-product__ad-badge라고 되어 있는 경우도 있습니다. 혹 새로고침 할 때 마다 조금씩 바뀌어 제공하는 것 때문에 그런 것인지, 코딩 창과 홈페이지를 동시에 새로고침 해 보아도 순위가 정확하지 않습니다. 이런 상황에서 크롤링이 정확하게 되고 있는 지 어떻게 알 수 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 유튜브 제목 크롤링을 하려는데 웹드라이버문제로 아예 초반부터 막혔습니다ㅠㅠ초반 코드 도와주세요...
어제 R studio를 여기서 하는데로 최신버전으로 깔았고, 여기서 하라는 데로 그대로 설치를 했습니다. 그리고 여기 강의를 들으면서 따라하던 중.. library(htmltab) 이것을 실행시키면 아래와 같은 문구가 뜨네요.. library(htmltab)에서 다음과 같은 에러가 발생했습니다:‘htmltab’이라고 불리는 패키지가 없습니다. 잠시 install.packages("htmltab")을 실행하지 않아서 그런가 봤더니. 그것도 아니어서... 그래서 더 낮은 32bit버전으로 깔고 해봤는데요... 똑 같습니다.. 그래서 인터넷에 검색해보니.. Package ‘htmltab’ was removed from the CRAN repository. 이렇게 나오네요.. 여기 나와 있는 밑에 답변이 있길래 기쁜마음에 복사해서 붙여놓고 하나하나 실행시켜봤습니다.. setwd("D:\\stock") #library(htmltab) url<-"http://finance.naver.com/item/sise_day.nhn?code=005380&page=1" # 종목 A url<-"http://finance.naver.com/item/sise_day.nhn?code=005930&page=1" # 종목B #install.packages("httr") library(httr) referer <- add_headers(Referer = "http://finance.naver.com/item/sise_day.nhn?code=005380&page=11") #검색해서 들어간 것처럼 위장하기위해 header를 붙여준다 tmp <- GET(url, referer) # GET함수를 통해 해당 서버에 통신을 함 뒤에 referer인자가 위장술 ta<-read_html(tmp)%>% html_nodes(xpath = '/html/body/table[1]') %>% html_table() ta2<-(ta[[1]]) ta2[-c(1,7,8,9,15),] code_data <- read.csv("data.csv",sep="\t") ? read.csv head(code_data) code <- as.character(code_data[,1]) code_name <- as.character(code_data[,2]) re_code <- as.character(sapply(code,function(x){ nc<- 6-nchar(x) paste0(c(rep(0,nc),x),collapse = "") })) k <- 1 i <- 1 for(k in 1:length(re_code)){ final_data<-NULL for(i in 1:10){ url <- paste0("https://finance.naver.com/item/sise_day.nhn?code=",re_code[k],"&page=",i) b <- htmltab(url,encoding="UTF-8") b final_data < -rbind(final_data,b) cat("\n",i) } head(final_data) tail(final_data) dim(final_data) .......... 결과는 몇줄 가지도 못하고 바로 add_headers(Referer = "https://finance.naver.com/item/main.naver?code=005380")에서 다음과 같은 에러가 발생했습니다: 함수 "add_headers"를 찾을 수 없습니다 로 나옵니다.. 이 문제가 반드시 해결이 되야 밑에 코딩한게 전부 의미가 있을 것 같습니다.
한국거래소를 타고서 예전에는 받을 수 있었던 것 같은데, 현재는 http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020303 이 곳으로 들어가야 종목코드를 다운받을 수 있게 바뀌었네요.. 초보라 한참 찾았습니다. 그리고 강의하시는 제목 "stock R"이 사실은 다운로드 받은 자료의 "naver증권크롤링_예제.R"이네요
query = "강아지옷" userDisplay = 15 option=0 searchBy = 1 # searchdate = "all" # all or 1w encoding_query = parse.quote(query,encoding="MS949") link = f"https://cafe.naver.com/joonggonara?iframe_url=/ArticleSearchList.nhn%3Fsearch.clubid=10050146%26search.media=0%26search.searchdate={searchdate}%26search.defaultValue=1%26search.exact=%26search.include=%26userDisplay={userDisplay}%26search.exclude=%26search.option={option}%26search.sortBy=date%26search.searchBy={searchBy}%26search.searchBlockYn=0%26search.includeAll=%26search.query={encoding_query}%26search.viewtype=title%26search.page={page_idx}" 이번 강의는 순서도 바뀐 것 같고 건너띄기 된 느낌입니다..이 부분 내용이 생략이 된 것 같아서요. 저기 link 주소랑 관련된 저 부분들 분석 하는 방법 궁금합니다. 그리고 FLAG 쓰셨는데.. 이해가 잘 안되서요.. 그걸 이용하는 방법을 알려주신 건지.. 저기에 꼭 써야하는건지 잘 이해가 안가네요. if에 break 걸어 놓으셨으니 FLAG를 안 써도 될 것 같아서 여쭤봅니다. ( keyword.py , menu.py 둘 다요)
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 실전 강의를 결제했습니다 실전 강의 전에 기본 강의 부터 듣고 있었는데, 네이버 상품 무안 스크롤 편을 보다가 업데이트된 코드를 그대로 작성했습니다 페이지에 있는 제품 리스트를 모두 가져와야 하는데, 제품 리스트 딱 하나만 가져옵니다 어떻게 해야 할까요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. from selenium import webdriver from selenium.webdriver.chrome .service import Service from selenium.webdriver.chrome .options import Options # 크롬 드라이버 자동 업데이트 from webdriver_ manager.chrome import ChromeDriverManager # 브라우저 꺼짐 방지 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.get(" https://www.naver.com ") \\여기까지 코드입니다. (그대로 따라썼는데 안되어서 강사님 다른 답변에서 직접 올려주신 코드 복사 붙여넣기 했습니다..!) selenium과 webdriver 모두 pip install 이용해서 설치했구요, selenium은 4.16.0, webdriver-manager는 4.0.1입니다. 에러 메시지는 아래와 같습니다. 보기 힘드실까 하여 아래에 AttributeError부분을 써놓겠습니다. determined_browser_version = ".".join(determined_browser_version.split(".")[:3]) AttributeError: 'NoneType' object has no attribute 'split'