묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
5.Bot Detection 피하기(고급편) 질문입니다.
options = uc.ChromeOptions()가져와서 아래쪽에 uc.Chrome() 실행할때 options가 안넣어져 있는데 안넣고 실행하는건가요???깃허브에 설명에는driver = uc.Chrome(options=options) 이렇게 되어 있어 보이는데요?
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
selenium으로 연 크롬창 안꺼짐
셀레니움 버전도 3.14?였나 최신걸로 업데이트 하고 써서웹드라이버 설치하는 것도 안해도 되는 상태인데요.강의에서는 driver.get(url) 하면 창이 켜졌다 자동으로 꺼지던데제꺼는 창이 자동으로 안꺼집니다... 뭔가 업데이트로 변경된 부분인가요? 창 안꺼지도록 하는 방법 강의 들으려는데제꺼는 원래 안꺼져서 당황스럽네요
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
string vs text
text가 하위 태그에 있는 문자열까지 가져온다는 것은 알겠습니다. 근데 string도 명확한 설명 부탁드립니다..강의에서 <a class="logo_naver"> <span class="blind">네 이버</span></a>이걸로 예를 들었는데.. 공백도 문자열이잖아요. 강의에서도 그렇게 말씀하셨고.그러면 위 html코드에 string을 불러오면 a태그 뒤의 공백 한칸을 가져와서 " " 이런 공백 한칸으로 이루어진 문자열이 나와야 할 것 같은데 None으로 나오죠..문자열인데 왜 None으로 나오는지 잘 모르겠습니다.엔터가 들어가도 None으로 나오는 것 같은데... text는 알겠는데 string은 설명이 좀 부족한것 같아서 보충 설명 부탁드립니다.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
html 출력문제
강의 내용 외 개인적인 실습 사이트의 질문은 답변이 제공되지 않습니다.문제가 생긴 코드, 에러 메세지 등을 꼭 같이 올려주셔야 빠른 답변이 가능합니다.코드를 이미지로 올려주시면 실행이 불가능하기 때문에 답변이 어렵습니다.답변은 바로 제공되지 않을 수 있습니다.실력 향상을 위해서는 직접 고민하고 검색해가며 해결하는 게 가장 좋습니다. import requestsfrom bs4 import BeautifulSoup url = "https://naver.com" req = requests.get(url) html = req.text print(html)주피터 노트에서는 실행이 되는데 비쥬얼스튜디오에서는 결과가 이렇게 나왔습니다. PS C:\Users\pw720> & C:/Users/pw720/AppData/Local/Programs/Python/Python311/python.exeon.exe AMD64)] on win32Python 3.11.5 (tags/v3.11.5:cce6ba9, Aug 24 2023, 14:38:34) [MSC v.1936 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> print(html)Traceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name 'html' is not defined>>> print(html)Traceback (most recent call last):File "<stdin>", line 1, in <module>NameError: name 'html' is not defined>>> beautifulsoup4설치가 안되는것같아 cmd에서 설치했는데 제대로 안깔려서 안되는건가요?
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
selenium 관련 web push notification 제어 질문
선생님 강의 관련 질문은 아니지만 셀리니움 사용 과정에 어려움을 느껴서 질문드립니다... 셀레니움에 두번째 페이지(window_handle[1]) 에서 웹푸시 알림이 뜨는데 크롬 옵션 설정 제어 안됨 (chrome_options.add_argument("--disable-notifications"))send_key(Keys.ENTER) 전송 X액션체인 X try문으로 WebDriverWait(driver, 10).until (EC.alert_is_present()) , alert.accept() ALERT 인식 못함. 어떤 방법으로 웹푸시 알림 을 확인하거나 취소 할 수 있을까요?
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
해시태그 검색 결과가 수강 내용과 달라서 올려주신 최종 코드가 적용되지 않고 오류가 납니다.
안녕하세요! 인프런에서 [인스타그램 휴대폰, 웹 자동화 프로그램 개발]을 수강한 사람입니다.본 강의를 이용해서 자동화 프로그램을 개발하려고 하는데, insta_web.py의 로직 수행 중 오류가 발생하여 문의드립니다.현재 문제가 생긴 부분은 다음과 같습니다.1. insta_web_hashtag_search 함수 부분 : driver.get(f"https://www.instagram.com/explore/tags/{keyword}/") 를 수행하면 인기 게시물이 28개만 뜹니다. 따라서 28개 이상의 링크를 추출하기가 어려운 것으로 보입니다. 수강생들이 이전에 질문한 글을 찾아봤는데 똑같은 질문을 하신 분이 계시더라고요.AI 인턴이 남긴 댓글을 확인하고 설정을 변경하려고 했는데 현재 인스타그램 웹사이트에서는 검색 결과를 최신 게시물로 변경하는 필터를 제공하지 않는 것 같습니다.이 부분에 대한 피드백을 주시면 감사하겠습니다.2. insta_web_link_extract 함수 부분 : WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, all_posting_sel)))에서 오류가 나서 넘어가지 않습니다. 1에서의 변경점때문에 셀렉터를 찾지 못해서 이런 일이 발생한 것 같다고 생각하는데 혼자 봐서는 잘 모르겠네요...오류 내용은 다음과 같습니다.Traceback (most recent call last): File "C:\Users\user\Desktop\insta_auto_sample\main.py", line 23, in <module> insta_web.insta_web_work(driver, keyword, count) File "C:\Users\user\Desktop\insta_auto_sample\insta_web.py", line 115, in insta_web_work insta_web_link_extract(driver, count) File "C:\Users\user\Desktop\insta_auto_sample\insta_web.py", line 73, in insta_web_link_extract WebDriverWait(driver, 10).until(EC.presence_of_element_located( File "C:\Users\user\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\support\wait.py", line 95, in until raise TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: Stacktrace: GetHandleVerifier [0x00007FF722D552A2+57122] (No symbol) [0x00007FF722CCEA92] (No symbol) [0x00007FF722B9E3AB] (No symbol) [0x00007FF722BD7D3E] (No symbol) [0x00007FF722BD7E2C] (No symbol) [0x00007FF722C10B67] (No symbol) [0x00007FF722BF701F] (No symbol) [0x00007FF722C0EB82] (No symbol) [0x00007FF722BF6DB3] (No symbol) [0x00007FF722BCD2B1] (No symbol) [0x00007FF722BCE494] GetHandleVerifier [0x00007FF722FFEF82+2849794] GetHandleVerifier [0x00007FF723051D24+3189156] GetHandleVerifier [0x00007FF72304ACAF+3160367] GetHandleVerifier [0x00007FF722DE6D06+653702] (No symbol) [0x00007FF722CDA208] (No symbol) [0x00007FF722CD62C4] (No symbol) [0x00007FF722CD63F6] (No symbol) [0x00007FF722CC67A3] BaseThreadInitThunk [0x00007FFE73ED7614+20] RtlUserThreadStart [0x00007FFE759E26F1+33] 전체 코드도 첨부합니다.# insta_web.py import time import data import chromedriver_autoinstaller chromedriver_autoinstaller.install() from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.webdriver import ActionChains import pyperclip def insta_web_login(driver): try: driver.get("https://www.instagram.com/") id_selector = "#loginForm > div > div:nth-child(1) > div > label > input" WebDriverWait(driver, 10).until(EC.presence_of_element_located( (By.CSS_SELECTOR, id_selector) )) # 인스타그램 로그인 id_input = driver.find_element(By.CSS_SELECTOR, id_selector) id_input.click() time.sleep(0.3) pyperclip.copy(data.id) actions = ActionChains(driver) actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform() time.sleep(0.5) pw_selector = "#loginForm > div > div:nth-child(2) > div > label > input" pw_input = driver.find_element(By.CSS_SELECTOR, pw_selector) pw_input.click() time.sleep(0.3) actions = ActionChains(driver) pyperclip.copy(data.pw) actions.key_down(Keys.CONTROL).send_keys('v').key_up(Keys.CONTROL).perform() time.sleep(0.5) login_btn_selector = "#loginForm > div > div:nth-child(3) > button" login_btn = driver.find_element(By.CSS_SELECTOR, login_btn_selector) login_btn.click() except Exception as e: print(e) print('[에러] insta_web_login > 로그인 에러 발생!') def insta_web_hashtag_search(driver, keyword): try: # 인스타그램 해시태그 검색 시작 search_selector = "#react-root > section > nav > div._8MQSO.Cx7Bp > div > div > div.QY4Ed.P0xOK > input" # WebDriverWait(driver, 10).until(EC.presence_of_element_located( # (By.CSS_SELECTOR, search_selector) # )) time.sleep(3) from urllib import parse # keyword = "고양이인스타" # keyword = parse.quote(keyword) driver.get(f"https://www.instagram.com/explore/tags/{keyword}/") except Exception as e: print(e) print("[에러] insta_web_hashtag_search > 해시태그 검색중 에러 발생!") def insta_web_link_extract(driver, count=100): all_posting_sel = "div[id^='mount_0_0'] > div > div > div > div > div > div > div > div > div > section > main > article > div:nth-child(3) > div" WebDriverWait(driver, 10).until(EC.presence_of_element_located( (By.CSS_SELECTOR, all_posting_sel) )) print("💙💙") all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) print("💙💙💙") ''' 목표 링크 n개 추출하기''' links = [] while len(links) < count : try: # 6번 스크롤 내리기(충분히 포스팅 개수가 쌓일만큼 스크롤 하기) for _ in range(6): driver.execute_script("window.scrollBy(0,600);") time.sleep(0.3) # 피드의 href 추출 all_posting_box = driver.find_element(By.CSS_SELECTOR, all_posting_sel) post_links = all_posting_box.find_elements(By.TAG_NAME, "a") for eachLink in post_links: # eachLink # Element Class link = eachLink.get_attribute('href') links.append(link) # 중복 제거 links = set(links) links = list(links) except Exception as e: print(e) print("[에러] insta_web_link_extract > while 에러 발생!") with open('links.txt', "a") as f: for link in links: print(link) f.write(f"{link}\n") def insta_web_work(driver, keyword, count): insta_web_login(driver) insta_web_hashtag_search(driver, keyword) insta_web_link_extract(driver, count)
-
미해결ChatGPT 실무에 100% 활용하기
이버 쇼핑 최저가 검색 코드를 ChatGpt에게 문의하는 부분
네이버 쇼핑 최저가 검색 코드를 ChatGpt에게 문의하는 부분에서 강사님과 다른 코드를 작성해 답변해 줍니다.import requestsfrom bs4 import BeautifulSoup# Naver 쇼핑에서 특정 제품의 최저 가격 정보를 검색하려면 Python을 사용할 수 있습니다.# 아래는 시작하기 위한 Python 코드 예제입니다.# 특정 제품에 대한 Naver 쇼핑 검색 결과 페이지의 URL을 지정합니다.product_url = 'https://search.shopping.naver.com/search/all?query=여기에_제품_이름_입력'# URL로 GET 요청을 보냅니다.response = requests.get(product_url)# 요청이 성공했는지 확인합니다 (상태 코드 200).if response.status_code == 200: # 페이지의 HTML 내용을 파싱합니다. soup = BeautifulSoup(response.text, 'html.parser') # 제품 이름 및 가격과 같은 제품 정보를 포함하는 요소를 찾습니다. product_elements = soup.find_all('div', class_='basicList_info_area__17Xyo') if product_elements: # 최저 가격과 제품 이름을 추적하는 변수를 초기화합니다. lowest_price = None product_name = None for product in product_elements: # 제품 이름과 가격을 추출합니다. name = product.find('a', class_='basicList_link__1MaTN').text.strip() price = product.find('span', class_='price_num__2WUXn').text.strip() # 가격을 정수로 변환합니다 (화폐 기호, 쉼표 등을 제거합니다). price = int(price.replace('원', '').replace(',', '')) # 최저 가격을 찾았거나 또는 최저 가격이 아직 없는 경우 업데이트합니다. if lowest_price is None or price < lowest_price: lowest_price = price product_name = name if lowest_price is not None and product_name is not None: # 최저 가격과 제품 이름을 출력합니다. print(f"'{product_name}' 제품의 최저 가격은 {lowest_price} 원입니다.") else: print("제품 정보를 찾을 수 없습니다.") else: print("페이지에서 제품 정보를 찾을 수 없습니다.")else: print("웹페이지 검색에 실패했습니다. URL 또는 네트워크 연결을 확인하세요.")이런 코드를 gpt가 제공하는데 어떻게 해야 강사님과 같은 코드가 출력 될까요?
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
문의 드립니다.
# 랜덤 패턴 가지고오기 def get_random_pattern(isMobile=True): ret_pattern = [] if isMobile: with open("./mobile_scroll.txt","r") as f : while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) selected_pattern = random.choice(ret_pattern) _,sx,sy,delay = selected_pattern.split("#") if abs(int(sy)) < 15 or float(delay) < 0.25: #너무 적은 값 return get_random_pattern(isMobile) return int(sx), int(sy), float(delay) else: # PC 패턴 with open("./pc_scroll.txt", "r") as f: while True: line = f.readline() if not line: break ret_pattern.append(line.rstrip()) pc_scroll_px = 114 # 100, 114 selected_pattern = random.choice(ret_pattern) _,dx,dy,delay = selected_pattern.split("#") if float(delay) < 0.25: return get_random_pattern(isMobile) return int(dx),int(pc_scroll_px), float(delay) 질문1. 위 패턴에서 pc_scroll_px 를 114로 하는 이유를 잘 모르겠습니다. 저는 모바일 말고 pc로 작업을 해보려고하는데 114씩만 올라갔다 내려갔다 스크롤되는데 전혀 사람처럼 보이지 않고 부자연스러워 보입니다. ㅜ def random_move(driver,direction="down",count=1,isMobile=True): for _ in range(count): # [O] 사람패턴 ~ 사람이 얼마나 스크롤을 움직였는지 # randY = random.randrange(200,300) randX,randY,_delay = get_random_pattern(isMobile) sx = random.randrange(100,270) sy = random.randrange(250,500) if direction == "up": randY = -randY if random.random() > 0.9 : #10%의 확률로 randY = -randY print(f"Scroll 한다 {randY}") ActionChains(driver).scroll_by_amount(0, randY).perform() # [O] 사람패턴 ~ 스크롤 하는 텀 prob = random.random() if prob < 0.5: dt = random.uniform(_delay*0.1, _delay*0.3) elif prob < 0.8: dt = random.uniform(_delay*0.2, _delay*0.6) else: dt = random.uniform(_delay*0.5, _delay*1.2) time.sleep(dt) time.sleep( 0.5) 질문2. 매개변수로 count를 받고있는데 이 부분을 넣은 이유를 정확하게 모르겠네요. ㅜ그리고 sx = random.randrange(100,270)sy = random.randrange(250,500)이렇게 받아둔 변수를 어떻게 활용하는지 강사님께서는 어떻게 사용하는지 궁금합니다.
-
해결됨실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
모바일에서 접속한 것처럼 안되는 문제
user-agent를 변경하고 실행해도 pc에서 접속한 것처럼 보입니다.제 코드는 아래와 같으며 파이참에서 작성했습니다.from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By import time # 모바일에서 접속한 것처럼 보이게 하기 user_agent="Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1" options = Options() options.add_experimental_option("detach",True) # 화면이 안꺼지는 옵션 options.add_argument("--start-maximized") options.add_argument(f"user_agent={user_agent}") service = Service(ChromeDriverManager().install()) #크롬 드라이버를 자동설치하는 서비스를 만듬 driver = webdriver.Chrome(service=service,options=options) url = "https://m2.melon.com/index.htm" driver.get(url) if driver.current_url != url: driver.get(url) time.sleep(2)
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
아직 질문 해결이 되지 못했습니다.
하단에 제 이름으로 질문한 "https://www.instagram.com/explore/tags/{keyword}")로 접속을 해보면" 문제 해결이 아직 되지 못한 상황입니다. ai 인턴님이 답변 하실 사안은 아닌 것 같고 강사님께서 답을 주셔야 할것 같습니다. 제 강의 가능한 기간이 9.10일입니다. 저번 질문도 이 질문과 같은 질문이었는데 아직 해결이 되지 못하였습니다. 강사님께서 직접 확인을 하도록 해서 기간 안에 해결을 해 주세요
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
print(soup.a) 태그 값이 None으로 나옵니다.
태그 관련 내용이 반환이 안 되는데 어떻게 하면 될까요?
-
미해결[신규 개정판] 이것이 진짜 엑셀자동화다 - 기본편
Chrome version 116, Selenium version 4.11.2 이후
프로그램 실행을 눌렀더니, 아예 에러메세지 조차 뜨지 않고 아무 응답이 없습니다. Stackoverflow등 구글링을 해봐도 제대로 된 해결책을 찾을 수 없었습니다.
-
미해결[자동화 완전 정복] 인스타그램 휴대폰, 웹 자동화 프로그램 개발
https://www.instagram.com/explore/tags/{keyword} 이상해요
선생님께서 알려주신 "https://www.instagram.com/explore/tags/{keyword}")로 접속을 해보면 이렇게 강의 화면에는 나오는데 저의 경우는 "최근사진" 그룹이 나오지 않더라구요. 제 능력으론 더 이상 강의 진행을 못하고 있는 상황입니다. 바쁘시겠지만 돌파구를 찾아 주시면 감사하겠습니다.
-
해결됨[신규 개정판] 이것이 진짜 엑셀자동화다 - 기본편
python upgrade 후 selenium 인식 불가
python 2.7에서 3.11.5로 업그레이드 후 selenium을 인식하지 못합니다. 방법이 있을까요
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
맥스터치포인트 "0"으로 변경되요?
크롤링시 첫페이지~2페이지등에는맥스터치포인트 값이 "1또는5" 로 설정되고 이후 페이지이동등의 경우 뷰탭클릭, 이미지탭클릭, 쇼핑탭클릭, 링크클릭후새탭으로이동, 링크클릭후새창으로이동 할때 맥스터치포인트 값이 "0" 으로 되면서 플랫폼 값도 "win32"로 바뀌는 현상이 있습니다. 이런경우는 어떻게해야하는가요?방법이 있다면 조언부탁드립니다.
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
사용자가 특정 버튼 클릭 후 크롤링하는 로직 작성하는 방법
안녕하세요 강사님.모든 강의를 수강한 이후에 왜 처음에 beautiful soup로 시작해서 selenium으로 끝이 나는지 절실하게 깨달을 수 있었습니다. 가르쳐 주신 예제를 바탕으로 개인적으로 추가 실습을 진행하면서 크롤링에 대한 이해를 높이려고 하는데 selenium의 경우 특정 버튼을 클릭하여 넘어간 이후에 크롤링이 진행되도록 자동화에 맞추어져 있는 라이브러리임을 알 수 있었습니다.네이버 예제 화면에 있는 메일, 카페, 블로그, 쇼핑, 뉴스, 증권, 부동산, 지도, 웹툰이 모여져 있는 배너에서 사용자가 특정 버튼을 눌렀을 때 이동한 해당 페이지에서 크롤링을 진행할 수 있도록 자동화하는 예제를 스스로 만들어 공부 중인데 이러한 경우에서 if 메일 if 카페 if 블로그 같은 분기를 바탕으로 작성한 로직 대신 동적으로 사용자가 클릭했을 때의 정보를 가져올 수 있도록 하는 방법이 있을까요? 수많은 버튼이 존재하게 된다면 사용자가 어떤 버튼을 누를지 xpath라던가 class를 특정할 수 없는 경우가 생길 수 있을 것 같아서 질문 드립니다..!
-
미해결[신규 개정판] 이것이 진짜 엑셀자동화다 - 기본편
Google Chrome 업데이트 이후 크롬드라이브 실행 오류
알려주신 크롬 드라이브 코드를 잘 사용하고 있었는데 Google Chrome을 최신 업데이트 한 이후에 크롬 드라이버 실행하는데 계속 오류가 발생하고 있습니다ㅠㅠㅠㅠ도움 주시면 감사드리겠습니다:-)크롬 버전: 버전 116.0.5845.111(공식 빌드) (64비트)작성 코드import time import openpyxl from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import UnexpectedAlertPresentException, NoAlertPresentException from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.alert import Alert from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.common.exceptions import TimeoutException from selenium.webdriver.common.action_chains import ActionChains from selenium.common.exceptions import NoSuchWindowException # 크롬 드라이버 자동 업데이트 from webdriver_manager.chrome import ChromeDriverManager # 브라우저 꺼짐 방지 chrome_options = Options() chrome_options.add_experimental_option("detach", True) # 불필요한 에러 메세지 없애기 chrome_options.add_experimental_option("excludeSwitches" , ["enable-logging"]) # 창 최대화 chrome_options.add_argument("--start-maximized") service = Service(executable_path=ChromeDriverManager().install()) driver = webdriver.Chrome(service=service , options=chrome_options) # 로그인 페이지로 이동 driver.get("https://eclogin.cafe24.com/Shop/") 에러 메세지File "c:\startcoding_automation\쇼핑몰 운영 자동화\Total.py", line 38, in <module> service = Service(executable_path=ChromeDriverManager().install()) File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\chrome.py", line 39, in install driver_path = self._get_driver_path(self.driver) File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\core\manager.py", line 30, in _get_driver_path file = self._download_manager.download_file(driver.get_driver_download_url()) File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\drivers\chrome.py", line 40, in get_driver_download_url driver_version_to_download = self.get_driver_version_to_download() File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\core\driver.py", line 51, in get_driver_version_to_download self._driver_to_download_version = self._version if self._version not in (None, "latest") else self.get_latest_release_version() File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\drivers\chrome.py", line 62, in get_latest_release_version resp = self._http_client.get(url=latest_release_url) File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\core\http.py", line 37, in get self.validate_response(resp) File "C:\Users\win10_original\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\webdriver_manager\core\http.py", line 16, in validate_response raise ValueError(f"There is no such driver by url {resp.url}") ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_116.0.5845
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
액션체인 부분.. 스크롤..
해당 부분에서 액션체인 scroll이 오류가 나네요. 제가 뭘 놓친걸까요 ?
-
해결됨Selenium 기본 과정
가상환경 설정 후 크롬 드라이버 다운받고 python .\app.py 코드를 쳤는데 에러가 나옵니다.
혹시 해결 방법이 있을까요..?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
네이버 view탭 검색 결과 크롤링 2, 3 질문
안녕하세요 강사님. 질문이 있어서 남기게 되었습니다. 첫 번째 질문: 네이버 view탭 검색 결과 크롤링 2를 완료한 이후 아래 코드 실행 후 손흥민을 검색했는데 검색결과가 30개가 아닌 7개가 출력되었습니다. 이러한 이슈 때문인지 네이버 view탭 검색 결과 크롤링 3 강의가 정상적으로 진행되지 않습니다.import requests from bs4 import BeautifulSoup # beautiful soup 라이브러리 import base_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=" keyword = input("검색어를 입력하세요 : ") url = base_url + keyword print(url) headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" } # dictionary req = requests.get(url, headers = headers) # GET 방식으로 naver에 요청 html = req.text # 요청을 하여 html을 받아옴 soup = BeautifulSoup(html, "html.parser") # html을 html.parser로 분석(클래스를 통한 객체 생성) total_area = soup.select(".total_area") timeline_area = soup.select(".timeline_area") if total_area: areas = total_area elif timeline_area: areas = timeline_area else: print("class 확인 요망") for area in areas: title = area.select_one(".api_txt_lines.total_tit") name = area.select_one(".sub_txt.sub_name") print(name.text) print(title.text) print(title["href"]) print() print(len(areas)) 두 번째 질문: 네이버 view탭 검색 결과 크롤링 3을 진행하면서 아래 코드처럼 작성하고 손흥민을 검색했을 때 NoneType 오류가 발생합니다. 첫 번째 질문의 이슈로 인해 그런 것인가요? .total_wrap.api_ani_send 클래스가 브라우저 상에서는 30개가 잘 나오는데 제대로 안 받아와진 것 같은 느낌이 듭니다. 도와주시면 감사하겠습니다 ㅠㅠTraceback (most recent call last): File "C:\python_web_crawling\01_4_naver.py", line 30, in <module> print(title.text) ^^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'text' 아래는 코드입니다.import requests from bs4 import BeautifulSoup # beautiful soup 라이브러리 import base_url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=" keyword = input("검색어를 입력하세요 : ") url = base_url + keyword print(url) headers = { "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" } # dictionary req = requests.get(url, headers = headers) # GET 방식으로 naver에 요청 html = req.text # 요청을 하여 html을 받아옴 soup = BeautifulSoup(html, "html.parser") # html을 html.parser로 분석(클래스를 통한 객체 생성) items = soup.select(".total_wrap.api_ani_send") for area in items: # ad = area.select_one(".link_ad") # if ad: # print("광고입니다.") # continue title = area.select_one(".api_txt_lines.total_tit") name = area.select_one(".sub_txt.sub_name") print(title.text) print(name.text) # print(title["href"]) print() #print(len(items))