선생님 난관에 부딪혔습니다. 제목과, 이름은 잘가져오는데. 썸네일 이미지가 메뉴에 가려져 있어서, 클릭을 못한다고 합니다. 이를 어찌 해결해야 할지 도저히 모르겠습니다 일단 코드는 아래와 같습니다. items = driver.find_elements(By.CSS_SELECTOR, "#_chartList > li.list_item") time.sleep(2) #_chartList .title.ellipsis for idx, item in enumerate(items[:5], 1): title = item.find_element(By.CSS_SELECTOR, 'p.title.ellipsis') name = item.find_element(By.CSS_SELECTOR, 'span.name.ellipsis') thumb = item.find_element(By.CSS_SELECTOR, 'div.thumb > a') thumb.click() time.sleep(2) album_url = driver.current_url driver.back() print(f">>>{idx}<<<") print(title.text.strip()) print(name.text.strip()) print(album_url) print() time.sleep(2) 실행하면 아래와 같은 오류가 납니다. selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <a href="javascript:goDetail('album','11211297')">...</a> is not clickable at point (40, 24). Other element would receive the click: <span class="ico-sprite ico-gnb-menu">...</span> 구글링 열심히 하다가 챗 gpt에게 물어보니 오약 : 메뉴 요소에 가려져있어서 클릭을 못하고, 메뉴 요소를 닫아야 한다고합니다 <span class="ico-sprite ico-gnb-menu"> 이 메뉴 요소가 문제인거 같은데, 메뉴에 가려져 있으면 어떻게 해결 해야하나요? 어떡해든 혼자힘으로 해결해 보려고 하였는데, 이건 도저히 해결책을 어떻게 연구해야 할지 모르겠습니다. 도와 주신다면 감사하겠습니다.
반복 적으로 관심 종목을 불러와서 챠트를 그리고 싶어서 while 문으로 구성 해 봤는데, 챠트가 출력되지 않습니다. 어디가 문제일까요? 문제가 된 while 문 출력 결과 입니다. 출력 결과 관심 종목을 입력 받으면 입력 받은 종목의 챠트를 출력하고, 다음 종목을 입력 받기를 기다리게 구성하였고, n or N을 입력하면 종료하는 것으로 구성하였습니다. 그런데 결과물에 챠트가 출력되지 않습니다. 한 종목 출력하면 출력이 됩니다.
자동화 메세지 안나오는 코드 입력후 options.add_experimental_option('excludeSwitches', ['enable-automation']) 크롬을 실행하면, 자동화 메세지지가 안나옵니다. 그러나 1분 58초 입니다. 크롬에서 오류 메세지 안보내는, 코드를 입력하면 자동화 메세지가 출력됩니다 options.add_experimental_option('excludeSwitches', ['enable-logging']) 즉 자동화 메세지 안나오는 코드 입력상태 이고 오류 메세지 안나오는 코드 입력상태 인데 위 두가지 조건을 입력하면 자동화 메세지가 안나오고 and 오류 메세지도 안나와야 하는데.. 오류 메세지는 나오지만, 자동화 메세지가 출력됩니다. 그래서 영상을 돌려보니, 선생님 강의 영상에서도 똑같은 증상이 나오고 있습니다! 아래는 선생님강의 영상 캡쳐 입니다 제 생각에는 add_experimental_option은 아래에 있는 코드가 적용되는게 아닐까 추측되네요. 저도 초보이지만, 저보다 늦게 공부하시는 분을 위해 남겨 둡니다. 저처럼 고민하시는 분들이 있으실수도 있으니까요
[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
다 설치하고 jupyter notebook 실행시키고 수업 듣고 있는데, 저는 왜 shift+ent 눌러도 저렇게 줄만 바뀔까요. 선생님 알려주시는 것처럼 출력이 안됩니다.. 그리고 Untitled name도 바꿔보려고 했는데 어떤 걸 입력해도 error 라고만 뜹니다. 마지막으로 질문을 올리다보니 제 화면이 선생님 화면과 다른 점이 우측 상단에.. Python 3 (ipykernel)이라고 되어 있네요? 선생님 화면은 Python 3만 나와 있습니다..ㅠㅠ 누가 좀 알려주세요ㅠㅠ 흑흑
강의 영상중에서 5분 27초 보면 vscode 터미널 내용지울땐, 선생님께서 clear 라는 입력하시고 엔터 누르시면, 터미널 내용이 사라집니다. 저는 clear라고 하면, 'clear'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. 위와 같이 나옵니다. 그래서 찾아보니, cls라고 하면 지워진다고 하는데, 선생님처럼 clear 명령어를 사용하고 싶습니다. 선생님께서는 터미널 단축키를 수정 하신건지 아니면 다른 터미널을 사용 하신건지 궁금합니다. 이게 간단한거 같으면서도, 검색으로는 더이상 알아낼수가 없네요 알려 주시면 감사하겠습니다.
쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]
- 본 강의 영상 학습 관련 문의에 대해 답변을 드립니다. (어떤 챕터 몇분 몇초를 꼭 기재부탁드립니다) - 이외의 문의등은 평생강의이므로 양해를 부탁드립니다 - 현업과 병행하는 관계로 주말/휴가 제외 최대한 3일내로 답변을 드리려 노력하고 있습니다 - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. <동적 웹사이트와 크롤링> - REST API 안녕하세요. 강의 잘 듣고 있습니다. REST API라고 하는 것이 데이터를 주고 받는 방법인 것은 알겠는데요. 이것이 프론트엔드와 백엔드의 데이터를 주고받는 방식이라고 이해하는게 좀 어려워서 부가설명을 부탁드립니다. 회사를 기준으로 이해하다보니 더 와닿지 않습니다. 제가 가끔씩 보는 사내의 IT개발은 JSP로된 2000줄 정도 되는 코드에 어떤 데이터가 필요하면, 데이터를 뽑는 쿼리를 데이터 베이스 담당하시는분한테 묻고 그 해당 쿼리를 집어넣고??하는 방식으로 하는 것 같은데, 제가 집에서하는 템플릿 코드 작성방식과와 다르지 않다고 이해해오고 있는데요. 규모가 큰 회사에서는 OPEN API 설명서처럼 백엔드에서DATA를 전달하는 방식을 구현해 놓는건가요? 그리고 한가지만 더 질문을 드리면, 제가 Flask 강의도 듣고 있는데요. 사실 백엔드와 프론트엔드의 차이를 잘 느끼지 못했습니다. 하나의 템플릿에 데이터를 넣어주는 역할까지를 백엔드가 하고 단지 프론트는 그 템플릿을 예쁘게 하는 역할을 하는것인가요? 만약 그렇다면 템플릿 상속도 있고, HTML CODE도 계속해서 변하는데 구분없이 혼자하는게 더 수월하겠다는 생각이 들어서요. 어떤 식으로 역할을 분배하고 일하는지 궁금합니다. 정말 좋은 강의 잘듣고 있습니다. 감사합니다!
concat으로 전제 종목을 합치는 pd.concat(result.tolist()) 코드 실행시 오류가 납니다. 오류 메세지는 : InvalidIndexError: Reindexing only valid with uniquely valued Index objects 입니다. get_item_info 함수를 실행해서 result 결과를 확인해 보니, index 가 모두 같지 않은 것 같습니다. 오류 부분이 어디일까요?
import requests from bs4 import BeautifulSoup import time response = requests.get( "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EB%B8%94%EB%9E%99%ED%95%91%ED%81%AC") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") # 뉴스 기사 div 10개 추출 for article in articles: links = article.select("a.info") # 리스트 if len(links) >= 2: # 링크가 2개 이상이면 url = links[1].attrs['href'] # 두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') # 만약 연예 뉴스라면 if "entertain" in response.url: title = soup.select_one(".end_tit") content = soup.select_one("#articleBody") else: title = soup.select_one(".media_end_head_headline") content = soup.select_one("#dic_area") print("====링크====", url) print("====제목====", title.text.strip()) print("====본문====", content.text.strip()) time.sleep(0.3) 위와 같이 코드를 짜고 실행했는데, https://entertain.naver.com/read?oid=629&aid=0000209267 이사이트 차례가 되자 content를 못 뽑아냅니다. 다음과 같은 에러를 나타냅니다. ====링크==== https://n.news.naver.com/mnews/article/629/0000209267?sid=106 ====제목==== 블랙핑크 지수, 요란하지 않은 '꽃'의 유혹[TF초점] Traceback (most recent call last): File "C:\Users\asd20\Desktop\startcoding_crawling\Chapter04\03.연예뉴스크롤링하기.py", line 27, in <module> print("====본문====", content.text.strip()) AttributeError: 'NoneType' object has no attribute 'text' 개발자도구를 눌러 html 구조를 확인해봐도 원인을 잘 모르겠습니다.
import requests from bs4 import BeautifulSoup response = requests.get( "https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90") html = response.text soup = BeautifulSoup(html, 'html.parser') articles = soup.select("div.info_group") # 뉴스 기사 div 10개 추출 for article in articles: links = article.select("a.info") # 리스트 if len(links) >= 2: # 링크가 2개 이상이면 url = links[1].attrs['href'] # 두번째 링크의 href를 추출 response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') content = soup.select_one("#articleBodyContents") print(content.text) 본문 내용의 ID가 articleBodyContents아닙니다. 그래서 "#dic_area"로 생각해서, 변경하고 진행했는데, 강사님처럼 전체 텍스트가 출력되는게 아니라 일부만 출력됩니다. 전체 텍스트를 볼려면 어떻게 해야하나요?
vscode 사용하고 있습니다. 코딩과 실행 모두 문제는 없으나 selenium 관련 명령 입력할때는 김플님 강의화면과 달리 자동완성 기능이 작동하지 않습니다. 예를 들어, options = Options() options. 까지 입력하면 여러가지가 나오고 그 중 add_experimental_option 이 떠야되는데 그렇지 않아 매번 직접 타이핑하고 있습니다. 해결방법이 있을까요?
다음 카페 크롤링을 이 강의를 통해 하고 있습니다. 다음 카페 로그인 및 해당 게시판 까지는 이동이 되는 데, 해당 글 내용에 대한 크롤링이 되지 않습니다(Xpath나 class를 이용해도 게시글이 클릭도 안되는데 그 이유가 궁급합니다.ㅠㅠ / ) <a href="/_c21_/bbs_read?grpid=5RFF&fldid=Acvb&contentval=002Lizzzzzzzzzzzzzzzzzzzzzzzzz&datanum=9034&page=1&prev_page=0&firstbbsdepth=&lastbbsdepth=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz&listnum=20" class="txt_item">심한 자폐아이 </a> 여기 안에 있는 내용을 가지고 오고 그 아래 부분의 글로 가지고 오려고 합니다...
안녕하세요 강의에서 알려주신 내용 바탕으로 해보고 있는데 어느순간부터 'PermissionError: [WinError 5] 액세스가 거부되었습니다' 라는 메세지가 나옵니다. 해당 메세지가 가르키는 줄을 보면 아래 코드중 service 부분에서 발생합니다. 어떻게 하면 수정할수있을지 도움말씀 부탁드립니다. service = Service(executable_path=ChromeDriverManager().install()) browser = webdriver.Chrome(service=service, options=chrome_options)
안녕하세요 강사님, 유튜브 강의 너무 잘 보고 좀 더 강사님의 강의를 통해 파이썬 배워보고자 인프런 수강하게 된 학생입니다. 크롤링 관련하여 강의나 유튜브 영상을 찾아봐도 접하기 힘든 유형인 듯 하여 질문드립니다. 위와 같이 흔히 접할 수 있는 가격 비교 사이트(D사, E사 등) 에서 카드할인가 포함과 같은 체크박스 선택을 하여 정보를 추출하고자 할 경우 어떻게 해야하나요? 기존 강의에서 접한 사이트와는 다르게 크롤링이 제한되는 듯 하여 질문드립니다...
이전 질문에 대해서 너무나도 빠른 답변 감사합니다. 해결되었습니다. 어떻게 해결책을 찾으셨나요? 쿠팡 part빼고 완강했는데, 다 들어보겠습니다. 다른 질문이 있습니다. 손흥민을 input값을 받아도 단순하게 더해서는 하이퍼링크된 url이 형성되지 않습니다. 저는 quote_plus를 사용해서 해결했는데, 강사님은 어떻게 해서 단순하게 더해서 하이퍼링크된 url이 완성될까요?
작성한 파이썬 코드(웹 크롤링)를 매일 정해진 시간에 실행하려 합니다 스케줄러를 사용하면 된다 구글링에 나왔는데요 어떤 식으로 사용하면 되는지 감이 안 와서 질문 드려요. 작성한 파이썬 코드 앞에 스케줄러 코드를 붙이면 되나요? 아니면 작성한 파이썬 파일을 불러와서 사용하는 방식으로 해야 하나요? 답변 부탁 드립니다.