게시글
질문&답변
2024.04.16
셀레니움 실습 시 창이 자동 차단되면서 꺼집니다.
음... 네이버 창이 떴다가 곧 '주의 요함' 이라고 뜨는 Chrome 창으로 전환이 되어 버립니다. 이게 어떤 창일까요?? 스크린샷 찍어서 보여주시면 확인해 보겠습니다. 'Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다' 이거는 정상적인 메세지 입니다 ^^
- 0
- 2
- 48
질문&답변
2024.04.11
연예뉴스크롤링의 CSS연산자 적용 및 no attribute 'text' 해결 방법
코드가 들여쓰기 되어 있지 않아서 실행하기가 어렵네요 ㅜ AttributeError: 'NoneType' object has no attribute 'text'는 선택자가 올바르지 않아서 발생하는 오류입니다. HTML 구조에 맞는 선택자만 똑바로 만들면 문제를 쉽게 해결할 수 있습니다. 이번에 새로 리뉴얼한 크롤링 기초 강의인데 한번 보시면 HTML 구조와 선택자를 만드는데 많은 도움이 되실 겁니다 🙂 https://youtu.be/Uf21RUo3KNc
- 0
- 1
- 43
질문&답변
2024.04.11
이 다음 강의도 준비가 되어 있을까요??
안녕하세요! 수강생님, 잘 들어주셔서 진심으로 감사합니다. 현재 네이버 카페를 시스템을 새롭게 운영하면서 전체 강의를 리뉴얼하고 있습니다. 기초 강의는 지금 70% 완료 되었고, 실전편 리뉴얼 이후에, 심화편을 제작할 예정입니다. 심화편도 요청이 많이 들어오고 있어 빨리 만들고 드리고 싶지만, 순서상 제작까지는 다소 시간이 걸릴거 같네요 ㅜ 소식은 유튜브나 네이버 카페, 인프런 새소식등을 통해 알려 드리겠습니다. 감사합니다! 스타트코딩 교육 센터 https://cafe.naver.com/startcodingofficial
- 0
- 2
- 54
질문&답변
2024.04.08
낮은 가격순을 클릭하는 문을 추가하고싶습니다.
https://search.shopping.naver.com/search/all?adQuery=%EA%B3%BC%EC%9E%90&origQuery=%EA%B3%BC%EC%9E%90&pagingIndex=1&pagingSize=40&productSet=total&query=%EA%B3%BC%EC%9E%90&sort=price_asc×tamp=&viewType=list '낮은가격순'을 클릭하면 URL 이 변경되는데요 변경된 URL로 driver.get 명령을 수행하면 됩니다 🙂
- 0
- 2
- 66
질문&답변
2024.04.03
pip는 내부 또는 외부명령 ,실행할 수 있는 프로그램
파이썬 재설치 해보셨을까요?? 아래 영상을 따라서 재설치 해보시면 좋을거 같습니다! https://youtu.be/cZVOluN1rrc 현재 쓰고 계신 파이썬 버전도 조금 낮은거 같네요 ㅎㅎ
- 0
- 2
- 72
질문&답변
2024.04.03
이미지 수집이 28번 이후로 이미지가 안떠요
작성하신 코드를 보여주시겠어요??
- 0
- 1
- 59
질문&답변
2024.03.25
마지막 페이지 관련
저도 얼마전에 네이버 뉴스 페이지가 완전 바뀐 것을 보고 실전편을 리뉴얼 해야 겠다는 생각을 했습니다 🙂 수강생분이 똑똑하셔서 제대로 캐치하신 것 같아요 질문하신 내용 전부 맞습니다. 네이버 뉴스 기사가 페이지 넘버링이 아닌, 스크롤식으로 변경된 것으로 확인됩니다. 이러한 경우에는 마지막 기를 어떻게 확인할 수 있을까요? ( 굳이 마지막 페이지를 확인할 이유가 없을 것 같긴 하지만ㅎㅎ 그래도 궁금하네요 ) -> 무한 스크롤 처리 방식으로 구현 가능합니다 아래 유튜브 영상 5:55 을 참고해 보세요! https://youtu.be/qRU94vtUb7c 검색량이 많은 검색어의 경우 끝도없이 내려가네요. 검색어가 적은 걸로 마지막페이지를 테스트해보면 좋을 거 같습니다. ex) 미옹이 이전 강의에서 확인하였던, &start={i}을 추가하여 네이버 뉴스 기사 결과를 수집해본 결과, 계속해서 수집이 되긴 했습니다. 제 생각에는 연관도가 높은순 → 낮은순으로 출력되는 것 같은데 맞는지도 궁금하네용ㅎㅎ -> 신기하게도 네이버에서 기존 방식을 그대로 나뒀습니다 ㅋㅋ 기본 정렬방식이 관련도순으로 되어 있습니다. 관련도에 대한 정확한 알고리즘은 아무도 모릅니다. 그래서 순서는 항상 바뀔 수 있어요.
- 0
- 2
- 73
질문&답변
2024.03.14
강사님 html 이 업데이트 되어서 오류가 난거 같습니다..!
안녕하세요. 스스로 오류를 해결하려고 했는데 잘안되서 답답하셨군요. 괜찮습니다. 저는 더 심했으니깐요. 코딩은 그러한 과정을 많이 겪을 수록 실력이 성장합니다. (사실 세상 모든일이 그렇죠 ㅎㅎ) HTML 종종 바뀔 수 있습니다. 강의예제 사이트 뿐만 아니라 본인이 원하는 사이트도 언제든 업데이트가 될수 있죠. 그래서 선택자를 스스로 만들어 낼 수 있는 능력이 정말 중요합니다. 뉴스 본문을 가져오기 위해서는 선택자를 정말 다양하게 만들 수 있지만 가장 쉬운 2가지를 뽑으면 다음과 같습니다. # newsct_article # dic_area import requests from bs4 import BeautifulSoup response = requests.get("https://search.naver.com/search.naver?ssc=tab.news.all&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를 추출 print(url) response = requests.get(url, headers={'User-agent':'Mozila/5.0'}) html = response.text soup = BeautifulSoup(html, 'html.parser') # print(soup) content = soup.select_one('#dic_area') print(content.text) 잘하실 수 있습니다! 끝까지 화이팅!
- 0
- 2
- 136
질문&답변
2024.03.06
주소창에 sports가 들어가 있어도 읽어서 출력해요ㅠㅠ
안녕하세요!! HTML에서 약간 업데이트가 있었네요 연예, 스포츠 뉴스가 아닌 일반뉴스의 본문을 가져오려면 선택자를 다음과 같이 써야 합니다 #dic_area import requests from bs4 import BeautifulSoup import time response = requests.get('https://search.naver.com/search.naver?ssc=tab.news.all&where=news&sm=tab_jum&query=%EC%86%90%ED%9D%A5%EB%AF%BC') 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를 추출 # 다시 request 날려 준다 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("#articeBody") elif "sports" in response.url : title = soup.select_one("h4.title") content = soup.select_one("#newsEndContents") # 본문 내용안에 불필요한 div, p 삭제 divs = content.select('div') for div in divs : div.decompose() paragrahs = content.select('p') for p in paragrahs: p.decompose() else : title = soup.select_one(".media_end_head_headline") content = soup.select_one("#dic_area") print("==========링크==========\n", url) print("==========제목==========\n", title.text.strip()) print("==========본문==========\n", content.text.strip()) time.sleep(0.3)
- 0
- 1
- 95
질문&답변
2024.03.06
궁금한게 있습니다.
안녕하세요 스타트코딩입니다! print 쓸때마다 한칸씩 아래로 내리는 것은 가독성 때문입니다. 한줄로 써도 되지만 보기 힘들기 때문이죠 ㅎㅎ 다른사람도 나의 코드를 볼 수 있다는 생각으로 작성하는 것이 좋습니다 ㅎㅎ
- 0
- 1
- 79