묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기
selenium 에러
안녕하세요, selenium을 사용해 파싱을 할 때, 예제처럼 'id'가 아닌 'div class'를 넣으면 다음과 같은 문법 에러가 발생 합니다. 해결책은 무엇이 있을까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
무비차트 모든 영화의 예매율, 개봉 날짜등 기타 정보 모두 가져오기 과정 중 질문입니다.
from bs4 import BeautifulSoup import requests url = "http://www.cgv.co.kr/movies/?lt=1&ft=0" headers = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36" } r = requests.get(url, headers=headers).text soup = BeautifulSoup(r, "html.parser") charts = soup.select("div.sect-movie-chart > ol > li") print(len(charts)) # Output : 20 ?? for chart in charts: title = chart.select_one("strong.title").text percent = chart.select_one("strong.percent").get_text print(title) print(percent(" : "))무비차트 페이지에 보여지는 갯수도 19개고, 개발자 도구에서 li를 세어봐도 19개인데len()으로 보면 20개가 나오고, for 문으로 코드를 실행시키면 19번째까지 제목과 예매율 출력하고 20번째에서 에러 문구가 발생합니다.어떤 부분을 찾아보면 될까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
쿠팡 크롤링
강사님의 훌륭한 강의력에 감탄하며 쿠팡 크롤링을 제외한 부분은 다 들었습니다. 감사합니다.쿠팡 크롤링 파트에 질문이 있습니다.3월27일 기준으로 위 방법이 막힌것같습니다.다른 방법을 찾으려고 했지만, 셀레니움 밖에 찾지 못했습니다.뷰티풀숩을 이용한 해결책은 없나요?
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
텔레그램 봇 만들기 코드 실행이 안됩니다 박사님..ㅠ
안녕하세요, 좋은 강의 보고 따라하면서 학습중입니다.좋은강의 정말 감ㅅㅏ드립니다..지금 텔레그램 봇 만들기 - 날씨 / 환율 응답, 컴퓨터 파일전송 기능 강의를 수강중입니다. /dir [대상폴더] 는 잘 구현이 되었는데/getfile /Users/사용자/test.txt로 파일 전송 기능이 구현이 안됩니다..디버깅으로 로그를 봐도 모르겠어서 질문 남깁니다!! 미리 감사드립니다.스크린샷도 같이 첨부드립니다!참고로 맥북으로 진행중입니다. [1] 디버깅[2] 기능구현 x/dir /Users/Desktop 입력하면 데스크탑 파일목록 나옴.[3] 코드import telepot import logging import os logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) telegram_token = "6129613380:AAGbL2T-ogOaIK4v2YTPe4zTD9pzBikKLEA" # 파일 경로 찾기 def get_dir_list(dir): str_list = "" if os.path.exists(dir): file_list = os.listdir(dir) file_list.sort() for f in file_list : full_path = os.path.join(dir,f) if os.path.isdir(full_path): f = "[" + f + "]" str_list += f str_list += "\n" str_list.strip() return str_list def handler(msg): content_type, chat_Type, chat_id, msg_date, msg_id = telepot.glance(msg, long=True) print(msg) # if content_type == "text" : # bot.sendMessage(chat_id, "[반사] {}".format(msg["text"])) # /dir c:\\workspace if content_type == "text": str_message = msg["text"] if str_message[0:1] == "/": args = str_message.split(" ") command = args[0] del args[0] if command == "/dir": filepath = " ".join(args) if filepath.strip() == " ": bot.sendMessage(chat_id, "/dir [대상폴더]로 입력해주세요.") else: filelist = get_dir_list(filepath) bot.sendMessage(chat_id,filelist) elif command[0:4] == "/get": filepath = " ".join(args) if os.path.exists(filepath): try: if command == "/getfile": bot.sendDocument(chat_id, open(filepath, "rb")) elif command == "/getimage": bot.sendPhoto(chat_id, open(filepath, "rb")) elif command == "/getaudio": bot.sendAudio(chat_id, open(filepath, "rb")) elif command == "getvideo" : #/getvideo c:\test\movie.mp4 bot.sendVideo(chat_id, open(filepath, "rb")) except Exception as e: bot.sendMessage(chat_id, "파일 전송 실패 {}".format(e)) else : bot.sendMessage(chat_id, "파일이 존재하지 않습니다.") bot = telepot.Bot(telegram_token) bot.message_loop(handler,run_forever=True)
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
실습내용 소스
타이핑해가면서 강의를 들어야 한다는건 알고있지만다리를 심하게 다쳐서 붓기 때문에 계속 누워있어야만해서.. 휴대폰으로 간신히 강의만 듣고있습니다.퇴원후에 바로 연습해보고싶은데혹시 실습내용 소스는 따로 제공하고 있지 않으신지요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
주식 크롤링 도움이 필요합니다. (추가 질문 있습니다.)
안녕하세요.어느새 무제한 강의로 바뀌었네요. ^^네이버금융크롤링을 응용하여 재무제표를 가져 오고 싶은데...https://finance.naver.com/item/main.naver?code=005930 페이지의 재무제표는 잘 가져왔습니다.그런데 재무재표 더보기 버튼을 클릭한 페이지에서 재무제표의 테이블 값을 가져오려니 못가져 오고 있습니다.https://finance.naver.com/item/coinfo.naver?code=005930&target=finsum_more 페이지 입니다.찾고 싶은 테이블 : <table class="gHead01 all-width" summary = "주요재무정보를 제공합니다.">왜 못가져오나 테스트 해보니html print 해보면 찾고 싶은 table 내용이 아예 없어요.해당 table의 부모인 div = id는 페이지 열 때 마다 값이 변합니다.동적페이지 이런 걸까요??? Selenium을 사용해야 하는건지...별 삽질을 다 해 보고 있는데 제 능력으로는 해결이 안되 도움이 필요합니다. ㅠㅠ
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
코레일 크롤링 질문
코레일도 토요코인이랑 비슷하게 post 이용해서 크롤링하려 해봤는데 잘 안되더라고요,,결국에는 그냥 selenium으로 들어가서 beautifulsoup로 좌석있는지 체크하고 10초마다 다시 조회한 다음 좌석있는지 다시 체크하는 식으로 해서 어느 정도 성공시키긴 했는데, 코레일은 requests랑 beautifulsoup만으로는 어려울까요? import requests from bs4 import BeautifulSoup import time token = "" channel = "#test" text = "Check your stock crawler." def post_message(token, channel, text): requests.post("https://slack.com/api/chat.postMessage", headers={"Authorization": "Bearer "+token}, data={"channel": channel,"text": text} ) myToken = "API토큰" url = "https://www.letskorail.com/ebizprd/EbizPrdTicketpr21100W_pr21110.do" #date_list = ['2022/06/25', '2022/07/02'] datas_obj = { "selGoTrain": 5, "txtPsgFlg_1": 1, "txtPsgFlg_2": 0, "txtPsgFlg_8": 0, "txtPsgFlg_3": 0, "txtPsgFlg_4": 0, "txtPsgFlg_5": 0, "txtSeatAttCd_3": 000, "txtSeatAttCd_2": 000, "txtSeatAttCd_4": 15, "selGoTrainRa": 5, "radJobId": 1, "adjcCheckYn": "Y", "txtGoStart": "용산", "txtGoEnd": "전주", "txtGoStartCode": 104, "txtGoEndCode":45, "selGoYear": 2023, "selGoMonth":3, "selGoDay": 23, "selGoHour": 8, "txtGoHour": 85500, "txtGoYoil": "목", "selGoSeat1": 15, "txtPsgCnt1": 1, "txtPsgCnt2": 0, "txtGoPage": 1, "txtGoAbrdDt": 20230323, "checkStnNm": "Y", "txtMenuId": 11, "SeandYo": "N", "ra": 1, "hidRsvTpCd": 3, "txtPsgTpCd1": 1, "txtPsgTpCd2": 3, "txtPsgTpCd3": 1, "txtPsgTpCd5": 1, "txtPsgTpCd7": 1, "txtPsgTpCd8": 3, "txtDiscKndCd1": 000, "txtDiscKndCd2": 000, "txtDiscKndCd3": 111, "txtDiscKndCd5": 131, "txtDiscKndCd7": 112, "txtDiscKndCd8": 321, "txtCompaCnt1": 0, "txtCompaCnt2": 0, "txtCompaCnt3": 0, "txtCompaCnt4": 0, "txtCompaCnt5": 0, "txtCompaCnt6": 0, "txtCompaCnt7": 0, "txtCompaCnt8": 0 } while True: time.sleep(2) response = requests.post(url, data=datas_obj) html = response.text soup = BeautifulSoup(html, 'html.parser') #a가 있으면 좌석 있음:#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > a:nth-child(1) > img #a없이 바로 이미지면 좌석 없음:#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > img # '#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > a:nth-child(1) > img' 선택자를 이용하여 좌석 이미지를 찾습니다. seat_with_a = soup.select_one('#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > a:nth-child(1) > img') seat_with_a2 = soup.select_one('#tableResult > tbody > tr:nth-child(3) > td:nth-child(6) > a:nth-child(1) > img') #tableResult > tbody > tr:nth-child(3) > td:nth-child(6) > img #tableResult > tbody > tr:nth-child(3) > td:nth-child(6) > a:nth-child(1) > img # '#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > img' 선택자를 이용하여 좌석 이미지를 찾습니다. seat_without_a = soup.select_one('#tableResult > tbody > tr:nth-child(1) > td:nth-child(6) > img') seat_without_a2 = soup.select_one("#tableResult > tbody > tr:nth-child(3) > td:nth-child(6) > img") # 좌석 이미지가 있으면 "좌석 있음"을, 없으면 "좌석 없음"을 출력합니다. if seat_with_a or seat_with_a2: print("좌석 있음") post_message(token, channel, "좌석 생김") elif seat_without_a and seat_without_a2: print("좌석 없음")이렇게 했는데 데이터 자체가 잘못됐는지 중간에 print(html)로 보니까 제대로 해당 페이지를 가져온 것 같지도 않더라고요..
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
undetected_chromedriver 사용시 widow-size 가 적용이 안됩니다.
5. bot detection 피하기 고급편에 나온 소스를 그대로 적용하였습니다.다른 부분은 문제가 없고, 에러 또한 없습니다.그런데 window-size 관련된 argument 값이 적용이 안됩니다.항상 큰 사이즈의 윈도우만 오픈되고 있습니다.python 버젼은 3.11.0 입니다.버젼을 다운그레이드 해야 할까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
네이버뷰탭검색결과크롤링2 파트에서 질문입니다.
우선 강의대로 블랙핑크, 손흥민 검색했을때 강의처럼 결과가 잘 나옵니다.제가 다른 키워드인 '제휴마케팅'으로 검색하니 첨부한 사진과 같은 결과가 나왔습니다. 혹시나 중간에 네이버 파워컨텐츠 광고가 있어서 그런건가해서 개발자도구로 코드를 비교해봤는데 그건 아닌거같고, 원인을 아직 모르겠어서 질문남깁니다.(수업처럼 크롤링 결과는 잘 나오고 맨 마지막에 아래와 같은 문구가 나왔습니다). 그리고 print(len(areas))부분도 '제휴마케팅'으로 검색했을땐 나오지 않았구요.
-
미해결Node.js로 웹 크롤링하기
페이스북 로그인
<button value="1" class="_42ft 4jy0 6lth 4jy6 4jy1 selected 51sy" name="login" data-testid="royallogin_button" type="submit" id="u_0_c_Cc">로그인</button> document.querySelector('#u_0_9_LS').click();위에 같이 실행하였는데 id값이 계속 변동하여 로그인 안되어서 document.querySelector('._42ft _4jy0 _6lth _4jy6 _4jy1 selected _51sy').click();class로 했는데도 로그인 안되네요 ??방법이 없나요?
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
실전 크롤링 기술팁2 >추출한 데이터 내 추출하기 질문 드립니다
선생님 안녕하세요, 강의 매번 잘 듣고 있습니다. 크롤링 복습 중 질문이 있어 아래와 같이 문의 드립니다 :)강의명: 실전크롤링과 강력한 크롤링 기술 팁2 강의 내 시간: 4:35질문: 하단의 초록색 부분만 추출할 때 저는 아래 첫번째샷으로 짜서 >>print(mydata.get_text() 결과값이 선생님이 하신 것과 동일한 결과가 나왔는데요, 선생님께서는 두번째 샷으로 설명해주셨는데, 다시 titles=mydata.find_all('li','course')를 받아서 출력을 해야 하는 건지 궁금합니다. 이미 id='dev_course_list로 상위 id에서 확정을 하고 들어가서 'li','course' 부분을 작성하지 않아도 된다고 생각했습니다.import requests from bs4 import BeautifulSoup res=requests.get('https://davelee-fun.github.io/blog/crawl_test') soup=BeautifulSoup(res.content,'html.parser') mydata=soup.find('ul',id='dev_course_list') print(mydata.get_text())import requests from bs4 import BeautifulSoup res=requests.get('https://davelee-fun.github.io/blog/crawl_test') soup=BeautifulSoup(res.content,'html.parser') mydata=soup.find('ul',id='dev_course_list') titles=mydata.find_all('li','course') for title in titles: print(title.get_text())
-
해결됨일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
에러 질문 드립니다 .
안녕하세요 쓰앵님수정 업로드 해주신 코드로 실습하고 있는데 또 오류가 나왔습니다 ㅠ앞부분은 다 됐는데header = {'User-Agent': ''} driver.implicitly_wait(3) driver.get(ns_address) req = requests.get(ns_address,verify=False) html = req.text soup = BeautifulSoup(html, "html.parser") sleep(2) element=driver.find_element_by_xpath(shoppingmall_review) driver.execute_script("arguments[0].click();", element) sleep(2)====run=====NameError Traceback (most recent call last) <ipython-input-9-8a5c5adbf17a> in <module> 1 header = {'User-Agent': ''} 2 driver.implicitly_wait(3) ----> 3 driver.get(ns_address) 4 req = requests.get(ns_address,verify=False) 5 html = req.text NameError: name 'ns_address' is not defined이름이 정의되지 않았다고 뜹니다.제가 어디서 잘못한 것일까요 ?chatgpt에도 넣어봤는데The error message indicates that the variable 'ns_address' has not been defined in the code. You need to define the 'ns_address' variable before using it in the 'driver.get()' method.이렇게만 나옵니다 알려주세요~
-
미해결Node.js로 웹 크롤링하기
2019년도 영상이라 error가 나는 걸까요? 2-4. csv에 출력하기에서 error
v16.19.18.19.3mac 2-4. csv에 출력하기 Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.createTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:174:47)at BrowserContext.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:367:26)at Browser.newPage (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:166:33)at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 0)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 1)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)Error: Protocol error (Target.attachToTarget): Target closed.at /Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:74:56at new Promise (<anonymous>)at Connection.send (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:73:12)at Connection.createSession (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Connection.js:153:36)at Target._sessionFactory (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:116:75)at Target.page (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Target.js:73:32)at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:112:23)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20-- ASYNC --at Target.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at Browser._createPageInContext (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/Browser.js:177:31)at processTicksAndRejections (node:internal/process/task_queues:96:5)at async /Users/youssi/crawler/lecture/index.js:15:20at async Promise.all (index 2)at async crawler (/Users/youssi/crawler/lecture/index.js:13:5)-- ASYNC --at Browser.<anonymous> (/Users/youssi/crawler/lecture/node_modules/puppeteer/lib/helper.js:111:15)at /Users/youssi/crawler/lecture/index.js:15:34at Array.map (<anonymous>)at crawler (/Users/youssi/crawler/lecture/index.js:13:31)at processTicksAndRejections (node:internal/process/task_queues:96:5) index.jsconst parse = require('csv-parse/lib/sync'); const stringify = require('csv-stringify/lib/sync'); const fs = require('fs'); const puppeteer = require('puppeteer'); const csv = fs.readFileSync('csv/data.csv'); const records = parse(csv.toString('utf-8')); const crawler = async () => { try{ const result = []; const browser = await puppeteer.launch({ headless: false }); await Promise.all(records.map(async (r, i) => { try{ const page = await browser.newPage(); await page.goto(r[1]); const scoreEl = await page.$('.score.score_left .star_score'); if (scoreEl) { const text = await page.evaluate((tag) => { return tag.textContent; }, scoreEl); console.log(r[0], '평점', text.trim()); result.push([r[0], r[1], text.trim()]); } await Page.waitFor(3000); await page.close(); } catch (e) { console.error(e); } })); await browser.close(); const str = stringify(result); fs.writeFileSync('csv/result.csv', str); } catch (e) { console.error(e); } }; crawler(); package.json{ "name": "lecture", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node index" }, "author": "youssi", "license": "MIT", "dependencies": { "axios": "^1.3.4", "cheerio": "^1.0.0-rc.12", "csv-parse": "^4.4.6", "csv-stringify": "^5.3.0", "puppeteer": "^1.13.0", "xlsx": "^0.18.5" } }
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
다른 사이트를 크롤링해보려는데 인코딩쪽에 문제가 있는 것 같습니다.
안녕하세요 선생님. 선생님 강의를 듣고 제가 원하는 사이트를 크롤링 해보려는데 인코딩문제가 생기는 것 같습니다. 사이트 주소는 이렇습니다. http://veganfesta.kr/modules/company/company_list.html?mc_code=1013import requests url = "http://veganfesta.kr/modules/company/company_view.html?seq=241&mc_code=1013" headers = { 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'} response = requests.get(url,headers=headers) response.encoding='utf-8' print(response.text)이렇게 코드를 짜봤는데요 결과는이런식으로 나옵니다. 인코딩 문제인가 하였는데response.encoding을 통해 uff-8인것을 확인했습니다.response.status는 200으로 정상이구요 ㅜ뭐가 잘못된 걸까요? 2시간가량 전전긍긍해보았지만 답을 찾지못해 선생님께 질문드립니다..제가 url을 구글이나 네이버로 바꿔 시도를 해보았을때는 잘되었는데 저 사이트로 url을 설정했을때 이렇게 나오네요.. 읽어주셔서 감사하며 답변 부탁드리겠습니다.
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
크롤링 질문드립니다.
html 태그로 크롤링을 하는 중입니다.<img height="6" width="7" alt="상승" src="https://ssl.pstatic.net/static/nfinance/ico_up.gif">위 태그에서 alt="상승" 이라는 부분을크롤링하고 싶은데 혹시 어떻게 하면 좋을까요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
엑셀에 데이터 크롤링 하면서 중간에 새로운 열 추가
선생님 안녕하세요좋은 강의 감사드립니다. 이전에 여쭤보았던 질문 중에 해결안된 것이 있어서 추가 질문드립니다. 아래의 예시와 같이 "중간에" 계속 열을 추가해야 하는 상황인데, 강의에서 나온 방식대로만 하면 "고정된" 열에만 추가할 수 있어서, 기존에 추가했던 데이터가 "밀리지 않는" 현상이 발생하더라고요. 혹시 해결할 수 있는 방법이 있을까요? 기존 데이터 그 이후에, 정보를 추가할 일이 있어서, 아래와 같이 B열에 새로운 열을 추가했다고 가정하면요또 그 이후에, 중간에 새로운 열 하나를 더 추가할 수도 있고요그러면, 원래 B열에 PER를 크롤링 하기로 되어있는데, D열로 크롤링 하도록 코드를 바꿔야 하는데, 코드를 안바꾸고 열이 밀린것처럼 코드도 자동으로 D열로 밀려서 크롤링 하도록 처음부터 설정할 수 있는 방법이 있을까요?
-
미해결R로 하는 웹 크롤링 - 입문편
htmltab 설치에 관한 질문..
> install.packages("htmltab") WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding: https://cran.rstudio.com/bin/windows/Rtools/ ‘C:/Users/bj449/AppData/Local/R/win-library/4.2’의 위치에 패키지(들)을 설치합니다. (왜냐하면 ‘lib’가 지정되지 않았기 때문입니다) Warning in install.packages : package ‘htmltab’ is not available for this version of R A version of this package for your version of R might be available elsewhere, see the ideas at https://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages >htmltab 설치하면 이런 문구가 뜨네요. 수동으로 설치를 시도해도 장 안되요.R tudio 버전은 4.2.2 입니다.
-
해결됨일잘하는 마케터, MD에게 꼭 필요한 파이썬 데이터 분석
driver = webdriver.Chrome('chromedriver', options=chrome_options)
안녕하세요. 5강수업 실습 중 오류가 나와 문의 드립니다.# 셀레니움 module import from selenium import webdriver import time from time import sleep from bs4 import BeautifulSoup from selenium.webdriver.common.keys import Keys import requests import re import os # Dataframe import pandas as pd df = pd.DataFrame(columns=['idx','star','review']) chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('disable-dev-shm-usage') chrome_options.add_argument("user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36") driver = webdriver.Chrome('chromedriver', options=chrome_options) 마지막줄이 계속 오류라고 나옵니다.driver = webdriver.Chrome('chromedriver', options=chrome_options) 이부분이요이 앞부분은 잘 됐는데 왜 이러는걸까요google colab에 그대로 복붙했는데 ㅠㅠ알려주세요 쓰앵님
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
프롬창 파이썬 셀레니움으로 실행 시 자동으로 꺼집니다
다 똑같이 따라했는데 왜 이러는지 모르겠네요...
-
미해결파이썬 텍스트 분석 입문 - 데이터 수집부터 분석까지
Re. Konlpy 설치오류(Okt 오류)
답변에 나온 방법을 토대로 파이썬, java, JPype, jupyter를 모두 제거한 후 재설치를 진행했습니다.python 설치 : 3.8.9 버전으로, python.org에 접속하여 인스톨러로 설치했습니다.cmd 상에서 python --version 입력하였을 시, python 3.8.9가 나오는 것을 확인했습니다.java 19.0.2를 검색하여, oracle 사이트에서 설치파일 다운로드 받아 설치하였습니다. 윈도우 64bit 버전으로 설치했습니다..시스템 환경변수 설정을 했습니다.Jpype를 말씀해주신 버전과 같은 버전으로 설치했습니다.cmd 상에서, pip install konlpy로 설치하였습니다.konlpy 설치 후 알려주신 방법을 따랐지만 기존과 같이 okt = Okt()상에서 에러가 발생합니다. 추가적으로 kkma, hannanum을 실행해보았지만 같은 에러가 발생합니다.