묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
셀레니움 변경점
https://selenium-python.readthedocs.io/locating-elements.htmlfind_element/s 함수에 변경점이 생겨 현재 교재로는 코드가 작동하지 않습니다.위 페이지 참고하시면 되겠습니다.
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
request.get() 하면 SSLCertVerificationError 에러가 납니다.
구글로 찾아보니 신뢰할수 없는 인증서 사용이라서 verify=False 를 하면 된다고 하는데요, res = requests.get("https://search.naver.com/search.naver?where=view&sm=tab_jum&query=%EB%A7%9B%EC%A7%91", verify=False) 하면 아래와 같이 경고가 나옵니다. 해결 할 방법이 있나요? InsecureRequestWarning: Unverified HTTPS request is being made to host 'search.naver.com'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/1.26.x/advanced-usage.html#ssl-warnings warnings.warn(
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
첫째 페이지 크롤링 오류
import requests from bs4 import BeautifulSoup main_url = "https://www.coupang.com/np/search?component=&q=%EA%B2%8C%EC%9D%B4%EB%B0%8D+%EB%A7%88%EC%9A%B0%EC%8A%A4&channel=user" header = { 'Host': 'www.coupang.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3',} response = requests.get(main_url, headers = header) html = response.text soup = BeautifulSoup(html, 'html.parser') links = soup.select("a.search-product-link") for link in links: sub_url = "https://www.coupang.com/" + link.attrs['href'] response = requests.get(sub_url,headers = header) html = response.text sub_soup = BeautifulSoup(html,'html.parser') #브랜드명 #중고상품 예외처리 try: #아래 태그를 찾고 brand = soup.select_one("a.prod-brand-name") except:# 없으면 아래처럼 비우기 brand = "" #상품명 name = soup.select_one("h2.prod-buy-header__title") #가격 price = soup.select_one("span.total-price > strong") print(brand,name,price) 이렇게 작성 하고 실행 시키니 아무일도 일어나지 않았습니다. 그래서 ctrl + F5 로 실행 시키니 크롤링 된 데이터가 모두 none 으로 크롤링 되네요 ..
-
미해결파이썬 텍스트 분석 입문 - 데이터 수집부터 분석까지
Konlpy 설치 오류
konlpy설치과정에서 오류가 발생했습니다.Conda 설치가 회사 네트워크 문제로 되지 않아 프롬프트로 파이썬을 설치했고 Python은 3.8.9버전입니다. (3.9와 최신버전인 3.11로 설치했었는데 에러가 해결되지 않아 3.8로 다운그레이드 했습니다.)Java는 19.0.2(64-bit)로 설치했고 JPype는 1.1.2-cp38-win_amd64로 설치했습니다.JAVA_HOME 환경변수 설정도 확인을 완료했는데 자바 패키지상의 오류가 나타나네요ㅜㅜ
-
미해결파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
if/elif 관련 질문 드립니다
선생님 안녕하세요, 파이썬을 처음 배우고 있는데 강의 들으며 많은 도움 감사히 잘 받고 있습니다. 다른 게 아니라 해당 강의(아래 표기)에서 '세 가지 숫자를 입력받아 가장 작은 수를 구하는 문제'에서 제가 작성한 코드로 data3을 가장 작은 수로 입력 했을 때 입력한 숫자 3개만 출력되고 가장 작은 값인 data3값이 출력이 안되었습니다 (data1,data2가 가장 작은 수 일 때는 각각 정상출력됨 )저는 if안에 if문을 넣어서 작성했는데 선생님이 작성하신 하나의 if절 내 and로 연결한 것이 달라서 출력이 안되는 것인지 문의 드립니다. (if절 안에 if절을 넣는 것과 하나의 if절 안에 and로 연결하는 것이 다른 의미를 가지는 것인지 궁금합니다)해당 강의명: 문제를 풀며 가장 자연스럽게 익숙해지는 파이썬 기본: 문자열,리스트,조건문 활용1 (시간: 9분 30초~) 에서 '세가지 숫자를 입력받아 가장 작은 수를 구하는 문제작성하신 코드 # data1=int(input()) # data2=int(input()) # data3=int(input()) # if data1<=data2 and data1<=data3: # print(data1) # elif data2<=data1 and data2<=data3: # print(data2) # elif data3<=data1 and data3<=data2: # print(data3)제가 작성한 코드data1=int(input('숫자1)) data2=int(input('숫자2)) data3=int(input('숫자3)) if data1<=data2: if data1<=data3: print(data1) elif data2<=data1: if data2<=data3: print(data2) elif data3<=data1: if data3<=data2: print(data3) (결과값) 숫자1 34 숫자2 45 숫자3 2 >> 32가 나와야 하는데 숫자1,2,3만 출력됨미리 감사합니다! :)
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
스크롤이 되지 않는 오류.
안녕하세요. 스타트코딩 선생님.강의 재미있게 듣고 실습하고 있습니다.deprecated 경고문 제외하고는 큰 문제 없이 실행되어 50개의 결과는 가져옵니다.그런데 좀 특이한 몇 가지 문제가 있습니다. ① 크롬이 불필요하게 2개 창으로 실행됩니다. 창 하나는 주소표시줄에 data; 라고 쓰여있는, 아무 동작도 하지 않는 텅 빈 화면을 보여주고, 그 다음에 열리는 크롬창은 네이버 이미지 검색 결과 화면이 우선은 잘 출력됩니다.② 두 번째로 열리는 크롬창에서 검색 결과 화면까지는 나오고 주소까지 크롤링 되는데, 스크롤이 되지 않습니다. 그냥 화면에 보이는 이미지의 주소 결과 딱 50개만 크롤링 되는 것 같아요. 어지간해서는 대부분 구글링으로 해결했는데, 이 부분은 찾기가 어려워 직접 여쭤봅니다.조언 부탁드립니다. from typing import KeysView 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 import time # 크롬 드라이버 자동 업데이트 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) # 웹페이지 해당 주소 이동 url = "https://search.naver.com/search.naver?where=image&sm=tab_jum&query=BTS" browser = webdriver.Chrome("c:/chromedriver.exe") browser.implicitly_wait(5) browser.maximize_window() browser.get(url) # 무한 스크롤 처리 # 스크롤 전 높이 before_h = browser.execute_script("return window.scrollY") # 무한 스크롤 while True: # 맨 아래로 스크롤을 내린다. browser.find_element(By.CSS_SELECTOR, 'body').send_keys(Keys.END) # 스크롤 사이 페이지 로딩 시간 time.sleep(2) # 스크롤 후 높이 after_h = browser.execute_script("return window.scrollY") if after_h == before_h: break before_h = after_h # 이미지 태그 추출 imgs = browser.find_elements(By.CSS_SELECTOR,'._image._listImage') for i, img in enumerate(imgs, 1): # 각 이미지 태그의 주소 img_src = img.get_attribute("src") print(i, img_src)
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
selenium을 활용한 크롤링 질문
안녕하세요 강사님 selenium은 동적 크롤링을 할때 사용한다고 알고있습니다. 간혹 로그인을 해야만 정보를 열람할 수 있는 사이트가 있는데 이런 경우에는 어떤식으로 접근을 할 수 있을지 알고싶습니다!
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
웹툰 사이트 body 안에가 안불러져옵니다.
<body> 태그 하위<div id="root"> 태그 하위에 실제 사이트 html이비어져서 옵니다.
-
미해결파이썬 텍스트 분석 입문 - 데이터 수집부터 분석까지
tfidf 관련
안녕하세요, tfidf관련하여 오류가 발생하여 질문드립니다.csv파일로 뉴스를 토픽모델링하는 과정에서,csv 파일에 뉴스를 추가하면서 계속 토픽모델링을 진행하는 과정에서어느 순간에 아래처럼 오류가 발생합니다. 토픽모델링이 가능했었는데, 왜 자료를 추가하면 진행하면 어느 순간 해당 오류가 생기는지 알 수가 없어서 질문드립니다ㅠㅠ 좋은 강의해주셔서 감사합니다!UnicodeDecodeError Traceback (most recent call last) Cell In[127], line 2 1 vectorizer = TfidfVectorizer(tokenizer=tokenizer, max_df=0.90, min_df=100, max_features=20000) ----> 2 tfidf = vectorizer.fit_transform(topnews['text']).toarray() File c:\Users\My COM\AppData\Local\Programs\Python\Python310\lib\site-packages\sklearn\feature_extraction\text.py:2131, in TfidfVectorizer.fit_transform(self, raw_documents, y) 2124 self._check_params() 2125 self._tfidf = TfidfTransformer( 2126 norm=self.norm, 2127 use_idf=self.use_idf, 2128 smooth_idf=self.smooth_idf, 2129 sublinear_tf=self.sublinear_tf, 2130 ) -> 2131 X = super().fit_transform(raw_documents) 2132 self._tfidf.fit(X) 2133 # X is already a transformed view of raw_documents so 2134 # we set copy to False File c:\Users\My COM\AppData\Local\Programs\Python\Python310\lib\site-packages\sklearn\feature_extraction\text.py:1387, in CountVectorizer.fit_transform(self, raw_documents, y) 1379 warnings.warn( 1380 "Upper case characters found in" 1381 " vocabulary while 'lowercase'" 1382 " is True. These entries will not" 1383 " be matched with any documents" ... ---> 93 result = [(token.getMorph(), token.getPos()) for token in result] 95 if join: 96 result = ['{}/{}'.format(morph, pos) for morph, pos in result] UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 0: invalid continuation byte
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
Chrome Network로 연결후 Packet 을 분석하는 방법
1.Chrome Network로 연결후에 Packet Network 분석하는 방법은 없을까요?Packet 툴로 잡히지 않는 것 같아서 다른 방법이 있나 문의드립니다. 2.문의사항이 있어 다른글에 남겨놓으신 카톡으로 연락을 드렸는데, 확인부탁드립니다.
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 기본편
혹시 강의에서 코딩한 소스코드는 따로 제공은 안해시는지 궁금합니다.
강의 잘 듣고 있습니다. 혹시 강의에서 코딩한 소스코드는어디서 다운로드 받을수 있는지 궁금합니다~~
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
네이버 웹툰을 활용한 BeautifulSoup 강좌에서 인터페이스가 달라졌습나다.
웹 크롤링을 하려 하니까 인터페이스가 완전히 갈아엎어져서 이거 뭐 어떻게 해야할지를 모르겠네요
-
해결됨파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
몇가지 문의사항이 있어서 올립니다
서두에 얘기하신 것처럼 찾기어려운 정보가 포함되어 있고, 도움이 많이 되었습니다.몇가지 문의사항이 있어서 올립니다.1.selenium 으로 정상작동했는데, undetected_chromedriver 로 바꾸면 사이즈가 굉장히 넓게 나오네요options.add_argument(f'--window-size=360,640')다른 소스는 동일하고 --window-size 도 동일하게 넣었는데, 이상하네요.강의 영상으로 봐도 소스는 동일한 걸로 보이는데, 무슨 차이가 있을까요?=> 확인된 내용 추가로 적습니다.https://github.com/ultrafunkamsterdam/undetected-chromedriver/issues/1100현재 최신버젼은 3.4.6 버젼인데 위 내용으로 보면 3.4.5 버젼부터 작동되지 않는다고 하네요.3.4.4 버젼으로 다운시키니 정상작동됩니다.안되시는 분들은 참고하시기 바랍니다. 최신버젼으로 사용가능한 방법이 있으면 알려주시기 바랍니다.아래 답변 참고하세요2.네이버의 경우 --headless나 --incognito 를 사용해도 영향이 있을까요?
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
셀레늄 실습중 문의
수업을 듣고 다른 사이트로 실습을 해보려고 하는데,jsp로 만들어진 공공기관 사이트는 뭔가 잘 안먹히는 모습니다.아래 사이트의 테이블 정보를 가져오고 싶은데, 얘네들은 클릭해도 주소가 변경되는것도 없고 아래와 같이 table이 들어있는 상위 class 태그를 찾아서 정의하고, 거기에서 table의 class명을 넣고 tbody, tr까지 찾아들어가도록 코딩을 했는데 table의 class명이 없다고 에러가 뜹니다.이런 사이트의 table내 정보는 어떻게 가져올 수 있고,테이블에 있는 원자재를 클릭해서 넘어가는 페이지는 어떻게 찾아갈 수 있나요?(XPATH, LINK_TEXT해도 먹히지 않아요..)https://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp url = "http://www.motie.go.kr/motie/py/sa/todayeconomyindexprice/todayEconomyIndexPri.jsp" driver.get(url) time.sleep(2) # driver.find_element(By.LINK_TEXT,"통계정보").click() # time.sleep(2) # driver.find_element(By.LINK_TEXT,"원자재가격정보") # time.sleep(2) class1 = driver.find_element(By.CLASS_NAME,"iframeLayout01") #테이블은 위와 같이 <table>안에 <tbody>, <tbdoy>안에 <tr>, <tr>안에 <td> 순으로 포함되어 있다. table_content = class1.find_element(By.CLASS_NAME,"data_print") tbody = table_content.find_element(By.TAG_NAME,"tbody") rows = tbody.find_elements(By.TAG_NAME,"tr") for index, value in enumerate(rows): body=value.find_elements(By.TAG_NAME,"td")[0] print(body.text)
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
ImportError: cannot import name 'webdriver' from partially initialized module 'selenium' 에러
A 폴더 안에 있는 B폴더에서 셀레니움 실습하던게 있었는데, 여기서는 자동설치 코드로 실행이 잘 되는데요,A폴더 안에 C폴더에서 이번 강의들으면서 실행하려고 하니 아래 에러가 발생합니다..어떻게 해결해야하나요? (base) C:\Users\jyjcj\PycharmProjects\webcrawling>C:/Anaconda3/python.exe c:/Users/jyjcj/PycharmProjects/webcrawling/kimple_inflearn/selenium_exercise/selenium.pyTraceback (most recent call last): File "c:\Users\jyjcj\PycharmProjects\webcrawling\kimple_inflearn\selenium_exercise\selenium.py", line 14, in <module> from selenium import webdriver File "c:\Users\jyjcj\PycharmProjects\webcrawling\kimple_inflearn\selenium_exercise\selenium.py", line 14, in <module> from selenium import webdriverImportError: cannot import name 'webdriver' from partially initialized module 'selenium' (most likely due to a circular import) (c:\Users\jyjcj\PycharmProjects\webcrawling\kimple_inflearn\selenium_exercise\selenium.py)
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
광고 상품 표기 추가문의
안녕하세요. 문의드립니다.광고 상품 대신에 로켓상품도 표기하고자 합니다. if len(link.select(".ad-badge-text")) > 0: print("광고상품")를 아래와 같이 수정하면 될까요?해봤는데 아무표기가 안되서요. if len(link.select("span.badge rocket")) > 0: print("로켓상품") 그리고 광고상품 로켓상품 둘다 표현하고자 하면아래와 같이 표기하면 될까요? if len(link.select(".ad-badge-text")) > 0: print("광고상품")elif len(link.select("span.badge rocket")) > 0: print("로켓상품")
-
해결됨[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
광고상품 표기외에 상품명도 보려고 하는데요. 에러가나네요.
광고상품 광고상품 표기외에 상품명도 보고자하는데요.아래와 같이 에러가 납니다.상품명도 보려면 어떻게 해야 할까요?https://www.coupang.com//vp/products/7119405125?itemId=17821748239&vendorItemId=84985642101&sourceType=srp_product_ads&clickEventId=f08dcc16-7eb1-4918-979f-8e4d3e2f2314&korePlacement=15&koreSubPlacement=1&clickEventId=f08dcc16-7eb1-4918-979f-8e4d3e2f2314&korePlacement=15&koreSubPlacement=1<div class="name">디엑스 DX320QHD 32인치 QHD 75Hz IPS 고성능 게이밍 컴퓨터 모니터, DX320QHD(일반)</div>Traceback (most recent call last):line 45, in <module>print(ad_name).textAttributeError: 'NoneType' object has no attribute 'text'print(ad_name).text에서 text를 빼고 실행시켜보았는데 다른 상품인데 아래와 같이 모두 상품명이 동일하게 나옵니다. <div class="name">인터픽셀 60.5cm FHD 75Hz IPS 평면 게이밍 모니터 화이트, IP2422(무결점)</div>광고상품https://www.coupang.com//vp/products/6070742312?itemId=11207404701&vendorItemId=78484994606&sourceType=srp_product_ads&clickEventId=2981eff0-533f-432a-ace7-a9dbbc8cf39b&korePlacement=15&koreSubPlacement=12&clickEventId=2981eff0-533f-432a-ace7-a9dbbc8cf39b&korePlacement=15&koreSubPlacement=12<div class="name">인터픽셀 60.5cm FHD 75Hz IPS 평면 게이밍 모니터 화이트, IP2422(무결점)</div>광고상품https://www.coupang.com//vp/products/1955685399?itemId=3323143682&vendorItemId=71310006110&sourceType=srp_product_ads&clickEventId=8ab74e64-bccb-400c-968d-9fe175da93a9&korePlacement=15&koreSubPlacement=15&clickEventId=8ab74e64-bccb-400c-968d-9fe175da93a9&korePlacement=15&koreSubPlacement=15<div class="name">인터픽셀 60.5cm FHD 75Hz IPS 평면 게이밍 모니터 화이트, IP2422(무결점)</div>광고상품 for link in links: print(ad_name).text <-이부분 때문에 에러가 나는것 같습니다. 어떻게 표기를 해야 할까요?
-
미해결[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
유튜브 크롤링/키워드 별 크롤링 방법에서 에러발생합니다.
div#metadata-line > span위 그림에서 처럼 이것은 인식 합니다만위 그림에서와 같이 div#metadata-line > span::nth-child(1) 은 인식 하지 못하는 것 같습니다.info.find_elements(By.CSS_SELECTOR, "div#metadata-line span")[0]selenium에서는 이렇게 해서 해결했습니다만...views = info.select("div#metadata-line > span")[1].text views = info.select("div#metadata-line span")[1].textBeautifulSoup에서는 위 코드도 오류가 발생합니다.
-
미해결남박사의 파이썬 기초부터 실전 100% 활용
질문드립니다.
사용자 입력 예외처리를 하고 있는데,1)문자 입력 시 오류2)3자리 숫자가 아닐 경우 오류다음과 같이 코드를 짰는데 1)의 경우 except 부분에서 "입력 오류"를 출력하지만 2)의 경우 "입력오류"가 출력되지 않고 그냥 재입력하게 되네요.혹시 이유를 알 수 있나요?또한문자 입력 시 "숫자만 입력 가능합니다"를 출력두자리수 입력 시 "세 자리 수를 입력하세요"를 출력하도록 하려면 코드를 어떻게 수정해야 할까요?감사합니다.!#세 자리 숫자만 입력할 수 있게 하는 함수 def input_check(msg, casting = int): while True: try: num = input(msg) # 사용자 입력 num_str = str(num) #맨 앞의 수가 0일경우 0이 잘려버리기 때문에 str을 따로 저장 if(casting(num) and len(num) == 3): return num_str except: print("입력 오류") continue
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
개발자 모드에서 클래스 항목 갯수 찾는 부분은 어떻게 설정할 수 있나요?
이부분 설정을 어떻게 하는지 궁금합니다. 검색해도 못찾겠습니다~ㅠㅠ