안녕하세요! 인프런에서 [인스타그램 휴대폰, 웹 자동화 프로그램 개발]을 수강한 사람입니다. 본 강의를 이용해서 자동화 프로그램을 개발하려고 하는데, 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)
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= 안녕하세요 강의를 보고 프로젝트에 적용 중 궁금증이 생겨서 해결한 문제가 있어서 옳은 결론을 낸 것인지 궁금하여 질문 드립니다. @ModelAttribute는 name 속성을 작성하지 않을 경우 파라미터의 class 명의 첫글자를 소문자로 바꾼 후 적용한다고 강의에서 들었습니다. ex) @ModelAttribute LoginUser loginUser 일 경우 loginUser로 model에 저장. @SessionAttribute를 사용하다가 무언가 이상해서 여러 테스트를 해보니 이 애노테이션은 name 속성을 사용하지 않았을 경우 클래스 명이 아닌 변수 이름을 사용하는 것으로 확인했습니다. ex) @SessionAttribute User loginUser 일 경우 loginUser로 session에 속성 값 저장. 제가 확인한 방법이 옳은 것인지, 틀리다면 어떤 것이 맞는지, 더 확인해야할 부분이 있는지 궁금합니다.
spring boot로 웹 프로젝트를 하며 git으로 협업을 하고 있는 상황입니다. 저 포함 2명의 개발자가 하나의 repository에서 작업하는데 pr을 올리면 서로 코드 리뷰를 해주고 머지하는 형태로 협업합니다. 그런데 제가 pr을 올리고, 바로 다음 작업을 진행하려고 하는데 이전 pr과 지금 하고 있는 작업이 서로 의존적인 상태라면 이전 pr을 머지하지 않고 안정적으로 다음 작업을 진행할 수 있는 방법이 있나요? 예를 들어서 차단 관련 API를 작성하려고 할 때, 이전 pr: 차단 목록 조회 이고 다음 작업: 회원 차단 하기 라면 controller, service, repository 등을 이전 pr에서 작성했을 텐데 머지하지 않은 상태에서 다음 작업에서는 main branch에서 따오기 때문에 controller, service, repository를 똑같이 작성해야 하는 상황입니다. 이런 상황에서 깔끔한 해결 방법이 있을까요?
지금까지의 강의 내용을 참고해보면, HttpSecurity, WebSecurity 둘다 SecurityConfigurer를 구성할 수 있기 때문에, 둘다 SecurityFilterChain을 형성할 수 있다로 이해했습니다. 그런데, springSecurity가 적용된 프로젝트들의 설정 빈들을 살펴보면 거의 HttpSecurity로만 활용하여 SecurityFilterChain을 구성하고 WebSecurity의 경우, WebSecurityCustomizer를 살짝 커스터마이징(리소스 접근 가능여부)이 적용만 되어있는것으로 확인했습니다. 이렇게 거의 HttpSecurity만을 활용하여 SecurityFilterChain을 커스터마이징하고 추가하는 경우가 많은 이유는 WebSecurity와 HttpSecurity가 담당하는 역할의 차이점 때문일까요? 아니면 프레임워크 구조 때문인걸까요?
안녕하세요 강사님, 우선 강의 잘 들었습니다. 일단 저도 예제와 비슷한 서비스를 구상하고 있는데 크롤링 저작권&이미지 3자 사용에 대해 저작권 법이 문제가 있을꺼 같아 아래와 같이 질문을 드리게 됫습니다. 질문1. 다른분의 예전 커뮤니티 강사님 답변을 확인해보니 매장데이터를 네이버에서 크롤링 하셧다고 했는데 법적(저작권)으로 문제가 없을까요?? (네이버는 네이버플레이스 API가 비공개 상태고 OpenAPI 외 정보수집은 불법 이라는 내용을 봤습니다..) 질문2. 가장 문제가 이미지일꺼 같습니다. 강의 매장데이터의 이미지주소들 처럼 네이버 에서 이미지주소를 가져와 저희가 만들려는 서비스에 이미지를 호출해도 저작권에 문제가 없을까요? (이미지 등록자가 보기엔 내 이미지를 네이버에 등록했는데 다른 서비스에서 내 이미지를 보여주고 있는???) 질문3. 아무래도 강의 등록전 위와 같은 이슈를 한번쯤은 고민해보셧을 꺼 같은데 관련된 정보가 있다면 공유해주시면 감사합니다. 감사합니다.
안녕하세요. 선생님. 동적계획법 파트에서 [동전교환(냅색알고리즘)] 정답 코드에 오류가 있는 것 같습니다. 제 파일만 그런지 모르겠는데, 첫번째 for 문에서 i 가 1부터 초기화되고, 뒤에 변수명이 arr.length로 되어있습니다.( arr.length > coin.length) 확인 부탁드립니다! 좋은 강의 감사드립니다..!
안녕하세요~ 풀스택 코스 전체 수업을 1회 훑어 보고, 프로젝트를 해보면서 필요한 부분을 다시 보는 중입니다. 우선 회원가입 단계를, 스텝1(약관동의),스텝2(정보입력),스텝3(가입완료) 로 나눠서 구현해보려고 하는데, 관련해서 질문 드립니다. 답변 주시면 정말 감사하겠습니다~ (vue cli, node express, mysql) 1.질문 요약 질문1) 라우터 3개로 처리 vs 라우터 1개로 처리 질문2) 약관동의 체크박스 router push get or post로 넘기면서 처리 vs vuex + 쿠키로 관리 후 브라우저 종료 시 쿠키 삭제 vs 세션으로 관리(세션이 vue에서 등록 가능한지 잘 모르겠음) 질문3) 세션을 vue 로 클라이언트 브라우저에 등록이 가능한가요? node express 서버에서 등록을 해줘야 하는 건가요? 2.질문 상세 각 단계별로 라우터를 각각 만들어야 할지, 라우터 1개로 만들어서 조건에 따라 보이고 숨기게 할지 어떻게 하는게 더 나은 처리 방법 일까요? 라우터 1개로 만들면 파일 1개에 소스가 많아져서 별로 인거 같기도 하고요? 라우터 1개+컴포넌트로 하는게 나을지? 라우터를 각각만들어 단계별로 데이터를 넘겨서 거기에 맞는 처리를 해야하는데, 새로고침 하니까, 넘긴 데이터가 사라져서 vuex + 쿠키로 관리하고, 살시간 설정 및 브라우저가 종료될때 쿠키를 삭제하는식으로 처리를 해보려고 하는데, 브라우저가 종료될때 쿠키를 삭제하는 식으로 하는게 가능할까요? 세션은 브라우저가 종료되면 자동으로 삭제 된다고 하는데, 구지 쿠키를 사용해서 번거롭게 삭제 하지않고, 세션으로 처리 하는게 더 나은 방법 같아 보이기도 하는데요? 세션은 쿠키와 같이, 클라이언트 브라우저에 등록되는게 맞을까요? 서버 컴퓨터에 등록이 되는 걸까요? 클라이언트 브라우저 세션과, 서버 세션 저장공간이 따로 있는건지.. 세션으로 처리하면 서버에 부담을 준다는 말을 들은거 같은데, 세션 데이터가 크지 않을텐데 왜 부담을 주는건지... 개념이 아리송 합니다~ 실제 프로젝트에서 쓸수있게 만들어 보려니 이리저리 생각이 많아지네요~
Where 절에서 동적 쿼리를 작성할 수 있듯이, orderBy 절에서도 동적쿼리를 작성해도 괜찮나요 ? 근데 orderBy 절은 null이 되면 안될 것 같은데 이런 경우에 동적으로 어떻게 해야하는지 궁금합니다. 또 실무에서는 where절과 order절 모두 동적 쿼리를 자주 사용하는지 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 비전공자로서, Spring을 공부하고 있는 취준생입니다. 프로세스 흐름도를 보면, 클래스 이름이 비슷하고, 각 클래스가 어떤 역할을 하는지 한번에 감이 안옵니다. 이 경우에는 제가 도메인 지식이 부족한 건지, 아니면 정상인지 궁금합니다...! 나중에 회사 들어가서, 이걸 왜 이해못하냐는 식의 핀잔을 들을까봐 걱정됩니다
강의를 들으면서 분명 삭제하기까지 정상 작동되는것을 보았는데 그 이후 diaryList에서 id값을 정렬할때 오류가 발생합니다 ㅠㅠ app.js에서 88번째 줄의 data가 정의되지 않았다고 뜹니다 .. 아래는 코드 샌드박스 링크입니다. https://codesandbox.io/s/late-morning-d483sv?file=/src
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요 강사님, 강의에서 '도메인'이라는 용어가 자주 등장하는데, 정확한 의미에 대해 알고 싶어서 질문드립니다.
안녕하세요. 강의 내용을 실전 반영 하면서 문의 드립니다. 트래픽 획득에서 3번 unassigned 그리고 세션 소스/매체가 저렇게 나오는데 저거는 어디서 찾아서 삭제나 변경을 하나요? 그리고 이렇게 표시 되는 이유를 알고 싶습니다. 5번 unassigned not set 어디서 오는걸로 봐야 하나요?