묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결블로그 자동화 프로그램 개발 강의 (파이썬 + 셀레니움)
아래 질문의 추가 캡쳐본입니다.
-
미해결블로그 자동화 프로그램 개발 강의 (파이썬 + 셀레니움)
오류 질문있습니다
지금 현재 from import에서 가져올수 없다는 오류가 계속 있습니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
YouTubeSearchTool 에러
YouTubeSearchTool 사용시requests.exceptions.HTTPError: 403 Client Error:Forbidden for url: https://api.ydc-index.io/search?query= 에러가 납니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
selenium chrome driver click시 화면이 공백으로 나옵니다.
from selenium.webdriver.common.by import Byeconomy = driver.find_element(By.CSS_SELECTOR,'#gnbContent > div > ul > li:nth-child(4) > a > span')economyeconomy.click()driver.implicitly_wait(5)시 화면이 공백으로 나오네요
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
네이버 쇼핑 크롤링 1 코드 사용 시, 접속 제한됐을 때의 해결 방법이 궁금합니다.
import requests from bs4 import BeautifulSoup keyword = input("검색할 상품을 입력하세요 : ") url = f"https://search.shopping.naver.com/search/all?&query={keyword}" user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" headers = {"User-Agent" : user_agent} req = requests.get(url, headers=headers) html = req.text soup = BeautifulSoup(html, "html.parser") print(soup)위 코드 사용 시 아래와 같은 결과가 나타납니다.keyword = input("검색할 상품을 입력하세요 : ") url = f"https://search.shopping.naver.com/search/all?&query={keyword}" user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36" headers = {"User-Agent" : user_agent} req = requests.get(url, headers=headers) # req = requests.get(url, headers=headers) # print(req.request.headers) html = req.text soup = BeautifulSoup(html, "html.parser") print(soup)<title>네이버쇼핑</title></head><body><div class="content_error"><div class="head">쇼핑 서비스 접속이 일시적으로 제한되었습니다. </div><div class="desc">네이버는 안정적인 쇼핑 서비스 제공하고자 시스템을 통해 아래와 같은 비정상적인 접근이 감지될 경우 해당 네트워크의 접속을 일시적으로 제한하고 있습니다.</div><ul class="reason"><li>상품 구매, 탐색과 무관한 외부 이벤트를 통한 접속</li><li>짧은 시간 내에 너무 많은 요청이 이루어진 IP</li><li>VPN을 사용하여 접속한 IP</li><li>특정 확장 프로그램 이용 시</li></ul><div class="footer">위와 같은 접근이 아님에도 접속이 제한된 경우,네이버앱을 업데이트 또는 <a href="https://help.naver.com/service/30016/category/5278" target="_blank"> 원클릭 진단</a>을 부탁드립니다.<br/> 해당 방법을 통해서도 접속이 불가한 경우 <a href="https://help.pay.naver.com/mail/form.help?alias=shopping_stop" target="_blank">네 이버쇼핑 고객센터</a>로 문의 부탁드립니다.</div></div></body></html>이런 상황에서 대안이 있을까요?
-
미해결[2024 개정판] 이것이 진짜 엑셀자동화다 - 기본편
사이트 접속 후 로그인 버튼 클릭 시 문제점
파이썬 입문자로서 강의 잘 듣고 있습니다!해당 강의 중 잘 안되는 게 있어서 문의 드립니다. 해당 사이트에 접속 후 로그인 버튼을 눌러야 하는 데 클릭을 안해서 time.sleep(3)을 했는데도 제대로 작동을 안하는데 잘못된 것이 있을까요?
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
2024.08.28 수요일 기준 날씨 정보 가져오기 소스코드입니다 (참고하세요 : ) )
개인적으로 만든거다 보니, 부족한 면이 많습니다. 헷갈리시는 분들이나 조금 어렵다고 느껴지는 분들을 위해서 공유해드려요 !import requests from bs4 import BeautifulSoup ''' [오늘의 날씨] 흐림, 어제보다 00도 높아요 현재 00도 (최저 00도 / 최고 00도) 오전 강수확률 00% / 오후 강수확률 00% 미세먼지 좋음 초미세먼지 좋음 ''' def scrape_weather(): print("[오늘의 날씨]") url = "https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%82%A0%EC%94%A8" res = requests.get(url) res.raise_for_status() soup = BeautifulSoup(res.text, "lxml") cast = soup.find("p", class_="summary").get_text() curr_temp = soup.find("div", class_="temperature_text").get_text().replace("현재 온도", "") # 현재온도 targets = soup.find_all("li", class_="week_item today") min_temp = targets[0].find("span", class_="lowest").get_text() # 최저 온도 max_temp = targets[0].find("span", class_="highest").get_text() # 최고 온도 morning_and_afternoon = targets[0].find_all("span", class_="weather_left") morning_rain_rate = morning_and_afternoon[0].get_text() # 오전 강수확률 afternoon_rain_rate = morning_and_afternoon[1].get_text() # 오후 강수확률 dust_list = soup.find_all("li", class_="item_today") pm10 = dust_list[0].get_text() # 미세먼지 pm25 = dust_list[1].get_text() # 초미세먼지 # 출력 print(cast) print(f"현재 {curr_temp} ({min_temp} / {max_temp})") print(f"강수확률 {morning_rain_rate.strip()} / {afternoon_rain_rate.strip()}") print() print(f"{pm10.strip()}") print(f"{pm25.strip()}") print() if __name__ == "__main__": scrape_weather() # 오늘의 날씨 정보 가져오기
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
24년, 부동산 퀴즈 코드입니다. 참고하세요!!
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from webdriver_manager.chrome import ChromeDriverManager from bs4 import BeautifulSoup # Setup Chrome options options = webdriver.ChromeOptions() options.add_experimental_option("detach", True) options.add_argument("--user-agent=''") # Initialize the browser browser = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) # 옵션 추가 - 웹페이지 최대화 browser.maximize_window() # 원하는 웹사이트로 이동 url = "https://realty.daum.net/home/apt/danjis/38487" browser.get(url) # 모든 요소가 로드될 때까지 대기 (최대 10초) WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "css-1dbjc4n"))) # 데이터 뽑기 시작 soup = BeautifulSoup(browser.page_source, "lxml") # 매물 정보 가져오기 targets = soup.find_all("div", class_="css-1dbjc4n r-1awozwy r-s4x47v r-18u37iz r-17s6mgv r-1m04atk") for idx, target in enumerate(targets): # 가격과 거래 방법 추출 price = target.find("div", class_="css-1563yu1 r-aw03qq r-1wbh5a2 r-1w6e6rj r-159m18f r-1b43r93 r-b88u0q r-rjixqe r-13hce6t r-1ff274t r-13wfysu r-q42fyq r-1ad0z5i") if price: plate = price.get_text().split(" ") use = plate[0] final_price = '' for index in range(1, len(plate)): final_price += plate[index] else: continue # 면적과 층수 정보 추출 area_and_floors = target.find_all("div", class_="css-1563yu1 r-1dnsj32 r-1wbh5a2 r-1w6e6rj r-159m18f r-n6v787 r-majxgm r-14yzgew r-fdjqy7 r-13wfysu r-q42fyq r-1ad0z5i") if len(area_and_floors) >= 2: area = area_and_floors[0].get_text() floor = area_and_floors[1].get_text()[-3:] else: area = "N/A" floor = "N/A" print("=" * 10 + " 매물 {0} ".format(idx) + "=" * 10) print(f"거래 : {use}") print(f"가격 : {final_price}".strip()) print(f"면적 : {area}".strip()) print(f"층 : {floor}".strip()) print() browser.quit()
-
미해결파이썬 무료 강의 (활용편3) - 웹 스크래핑 (5시간)
git hub에 push할때 user-agent가 노출되도 상관이 없나요 ?
git hub에 저의 user-agent가 노출되어도 상관이 없을까요 ? git hub에 소스코드를 push하면서 진행을 하고 있는데 괜찮을까요 ?
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
네이버 로그인시 접근 방식에 대해 궁금증이 생겼습니다.
샐러리움 모바일 상태에서 네이버 로그인하려는데 [1번: 네이버 메인화면에서 바로 로그인 사이트 주소로 타이핑 하여 들어가는 방법]과 [2번 : 네이버 모바일에서 하나하나 클릭하는 코드를 만들어서 로그인 화면으로 들어가는 방법] 2가지 방식을 알게 되었습니다.그런데 1번 방법으로 접근할 경우 iP보안 란이 뜹니다. 내용을 읽어보면 이걸 무시하고 진행하기 보다는 해제한 상태에서 진행하는 것이 사전에 문제를 차단할 수 있는 방법으로 보입니다. 반면 2번에는 일너 ip보안 창이 나오지 않는 것을 알 수 있습니다. (생략 되는 건지 어떤건지는 모르겠습니다 )그렇다면 1번의 방식으로 접근하는 것이 크롤링을 덜 차단당 할 수 있는 안전한 방법인가요?1. https://nid.naver.com/nidlogin.login?mode=form&url=https://m.naver.com https://nid.naver.com/nidlogin.login?svctype=262144&url=https%3A%2F%2Fm.naver.com%2Fna%2F
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
모바일 해상도와 userAgents 정보
수강완료 후 다시보고 있는데 userAgent 정보에 있는 모바일 디바이스 정보와 디바이스에 맞는 동일 해상도로 크롤리 작업을 할 필요는 없을까 하는 의문이 듭니다. 예를 들어 a52s라는 모바일 디바이스로 크롤링을 한다면 해상도 2400 x 1080으로 화면을 띄우고 작업해여 하지 않나 라는거죠 포털 사이트에서 모바일 디바이스와 동일하지 않는 해상도로 작업하는 계정을 벤하지 않을까 걱정이 됩니다. ㅜㅜ
-
미해결웹크롤링 with 파이썬
pycharm setting에서 질문 드려요.
안녕하세요? pycharm 세팅에서 python interpreter 설정 시 설정한 패키지가 보이지 않아서요ㅠㅡㅠ 여러번 다시 따라했는데 안되는데 방법이 있을까요?ㅜ.ㅜ
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의동영상이 잘못 업로드 된거 같아요
안녕하세요. 강의 듣던 중에 제목과 다른 영상이 있어서 문의 드려요.섹션 5 - 프로젝트 2"Youtube 동영상 댓글분석 - LLM 모델로 감성 분류 및 평점 예측" 동영상이"Youtube 상품 리뷰 영상에서 상품정보를 추출, 요약" 과 동일한 영상입니다.잘못 업로드 된거 같아요확인 부탁드립니다.
-
미해결파이썬 셀레니움 고급편 (python selenium - 크롤링, 크롤러)
execute_cdp_cmd 코드가 작동하지 않습니다.
from user_agents import parse from selenium import webdriver from selenium.webdriver.chrome.options import Options import random, time # 한국에서 개통된 버전은 이런 데이터 들이 필요하다. def make_user_agent(ua, is_mobile): user_agent = parse(ua) model = user_agent.device.model platform = user_agent.os.family platform_version = user_agent.os.version_string + ".0.0" version = user_agent.browser.version[0] ua_full_version = user_agent.browser.version_string architecture ="x86" if is_mobile: # 모바일 버전 platform_info = "Linux armv81" architectur="" else: # PC 버전 platform_info = "Win32" model = "" RET_USER_AGENT = { "appVersion" : ua.replace("Mozilla/", ""), "userAgent" : ua, "platform" : f"{platform_info}", "acceptLanguage" : "ko-Kr, kr, en-US, en", "userAgentMetaData" : { "brands" :[ # 네트워크 탭 확인하고 넣기 {"brand":" Not A;Brand", "version":"99"}, {"brand":"Google Chrome", "bersion":f"{version}"}, {"brand":"Chromium", "version":f"{version}"} ], "fullVersion":f"{ua_full_version}", "platform":platform, "platformVersion":platform_version, "architectur":architecture, "model" : model, "mobile":is_mobile # True, False } } return RET_USER_AGENT pc_device = ["1920,1440","1920,1200","1920,1080","1600,1200","1600,900", "1536,864", "1440,1080","1440,900","1360,768" ] mo_device = [ "360,640", "360,740", "375,667", "375,812", "412,732", "412,846", "412,869", "412,892", "412,915" ] width, height = random.choice(mo_device).split(",") print(width, height) UA = "Mozilla/5.0 (Linux; Android 9; Mi A2 Lite Build/PKQ1.180917.001; AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/127.0.0.0 Safari/537.36'" options = Options() UA_Data = make_user_agent(UA, True) print(UA_Data) #UserAgent 속이기 options.add_argument(f"--user-agent={UA}") options.add_argument(f"--window-size={width}, {height}") options.add_argument("--disable-blink-features=AutomationControlled") driver = webdriver.Chrome(options=options) driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data) driver.get('https://www.google.com') input() --아래 코드가 작동하지 않습니다. 이유가 뭘까요?driver.execute_cdp_cmd("Network.setUserAgentOverride",UA_Data) [ 버전 ]python 3.10.10selenium 4.13.0
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
LLM 기능 사용시에 라이브러리 에러 문제
안녕하세요, 선생님 강의 잘 듣고 있습니다.공유 해 주신 코드를 실행 할 때 LLM 기능 사용할 때 에러가 발생되서 실행이 되지 않습니다. 에러코드 첨부 드립니다. ---------------------------------------------------------------------------RateLimitError Traceback (most recent call last)Cell In[14], line 29 26 # Chain 27 llm_chain = prompt | llm | output_parser---> 29 response = llm_chain.invoke({"text": text}) 31 responseFile ~\miniconda3\envs\study\Lib\site-packages\langchain_core\runnables\base.py:2499, in RunnableSequence.invoke(self, input, config) 2497 try: 2498 for i, step in enumerate(self.steps):-> 2499 input = step.invoke( 2500 input, 2501 # mark each step as a child run 2502 patch_config( 2503 config, callbacks=run_manager.get_child(f"seq:step:{i+1}") 2504 ), 2505 ) 2506 # finish the root run 2507 except BaseException as e: 생략 ~ 해결 방법이 있을까요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
추가 강의 업데이트 있나요?
안녕하세요. 강의 잘 보고 있습니다.이제 강의는 모두 업데이트 완료된 건가요?네이버 부동산 매물도 크롤링으로 자동화 하고 싶은데 혹시 강의로 만드실 계획은 있으신가요?
-
미해결실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
lambda 중에 문의가 있습니다.
강의 내용 외 개인적인 실습 사이트의 질문은 답변이 제공되지 않습니다.문제가 생긴 코드, 에러 메세지 등을 꼭 같이 올려주셔야 빠른 답변이 가능합니다.코드를 이미지로 올려주시면 실행이 불가능하기 때문에 답변이 어렵습니다.답변은 바로 제공되지 않을 수 있습니다.실력 향상을 위해서는 직접 고민하고 검색해가며 해결하는 게 가장 좋습니다.최대한 구글링을 동원해서 해보는 중인데 막히네요.모니터링 가서 로그 나오는것 까지 확인 했습니다. event, message, text 이렇게 표시 되는거요.def lambda_handler(event, context): result = json.loads(event["body"]) print(f"event : {event}") keyword = result["message"]["text"] news_crawler(keyword) 그다음 위의 코드 작성하고 run을 해보면 아래와 같이 body 키 문제가 있다고 나옵니다.무슨문제일까요...ㅜ"errorMessage": "'body'", "errorType": "KeyError", "requestId": "628cac7e-f4ae-41f3-9ba3-ba7a3e7f464f", "stackTrace": [ " File \"/var/task/lambda_function.py\", line 59, in lambda_handler\n result = json.loads(event['body'])\n"
-
미해결[2024 개정판] 이것이 진짜 엑셀자동화다 - 기본편
엑셀 파일 제목 중복되면 (1),(2) 씩 늘어나게 해서 생성하게 하기
파일이 중복되면 다시 지웠다가 파이썬을 실행시켜야 하는데 그걸 막기 위해 코드 추가했습니다.import openpyxl import random import os from datetime import datetime, timedelta wb = openpyxl.Workbook() ws = wb.active base_path = '파일이 있는 폴더 경로 ex)c://user' base_filename = '파일명.xlsx' full_path = os.path.join(base_path, base_filename) # 파일명이 겹치면 숫자를 붙여가며 저장 if os.path.exists(full_path): version = 1 while os.path.exists(full_path): name, ext = os.path.splitext(base_filename) full_path = os.path.join(base_path, f"{name} ({version}){ext}") version += 1 ws.title = 'automation' item = [['32인치 모니터', 350000], ['마우스 패드', 20000],['게이밍 마우스', 40000], ['기계식 키보드',120000]] # ws['A1'] = '순번' # ws['B1'] = '제품명' # ws['C1'] = '가격' # ws['D1'] = '수량' # ws['E1'] = '합계' # ws['F1'] = '날짜' ws.append(['순번','제품명','가격','수량','합계','날짜']) first_date = datetime(2024, 3, 1) for i in range(2, 12): current_date = first_date + timedelta(i) rand_ind = random.randint(0,3) selected_item = item[rand_ind] ws.append([i-1, selected_item[0], selected_item[1], random.randint(1,8), f'=C{i}*D{i}', current_date.strftime('%Y-%m-%d')]) # strftime으로 나타내야 엑셀에서 날짜형식으로 뜬다. wb.save(full_path)
-
미해결[2024 개정판] 이것이 진짜 엑셀자동화다 - 기본편
엑셀 다루기 기초에서 날짜 1일씩 늘어나게 하기
from datetime import datetime, timedelta import openpyxl # 날짜 시작 start_date = datetime(2030, 1, 1) # 데이터 추가(2) ws.cell(row=2, column=1, value= start_date.strftime('%Y-%m-%d')) ws.cell(row=2, column=2, value = 20000) ws.cell(row=2, column=3, value='삼성tv') ws.cell(row=2, column=4, value = 4) ws.cell(row=2, column=5, value='=B2*D2') for i in range(3,7): current_date = start_date + timedelta(days=i-2) ws.cell(row = i, column = 1, value = current_date.strftime('%Y-%m-%d')) 엑셀 다루기 기초 - openpyxl 수업에서 데이터 추가할 때,3번재 행 셀부터 날짜가 1일씩 늘어나게 작성해 보았습니다.
-
미해결LLM 데이터 분석 - 웹 크롤링부터 추천 시스템까지
강의에서 소스코드는 어디서 볼 수 있을까요?
찾아봤는데 못찾겠어서 질문 드립니다,,,,