본문 바로가기

Scraping 9

[파이썬으로 웹스크래핑] 스크래핑용 라이브러리로 다시 떡상하는 requests... 오늘은 스파르타 코딩클럽에서 웹개발종합반 심화반 수업 중에 크롤링 얘기가 나와서 좀 마침 쓰려고 하던 글과 어느 정도 맞아떨어지는 것이 있어서 올려본다ㅎㅎ 역쉬 스크래핑 짜릿해... 강의 내용에서 타깃으로 정한 것은 SBS TV맛집 이라는 사이트였다. 이 사이트는 SBS에서 만든 듯 하지만 TvN이나 olive 채널의 맛집 프로도 함께 소개되어 있어 소스로 아주 좋은 것 같았다. (식신원정대랑 맛있는 녀석들도 올려줘요...) 조회 순으로 훑어보니 아무래도 사람들이 수요미식회에 관심이 많은지 조회수가 비교적 높았다. SBS TV맛집 matstar.sbs.co.kr 수업에서는 기초반에서 배운 리퀘스츠+뷰티풀숲의 조합으로는 어떤 한계가 있는지, 멜론 같은 동적 웹페이지에서 텅빈 껍데기를 불러오는 모습으로 그 .. 2021. 9. 15.
[파이썬 패키지 wordcloud] 우리 카톡엔 무슨 단어가 가장 많을까?? 파이썬을 기본적으로 조금 다뤄본 사람이라면 파일을 불러와서 한줄씩 화면에 띄우는 것은 할 수 있으리라 믿고 글을 쓴당. 기본 형식은 다음과 같다. 방법A f = open("./sample.txt", mode="r", encoding="utf8", newline="") for line in f.readlines(): print(line) 방법B with open("./sample.txt", mode="r", encoding="utf8", newline="") as f: for line in f.readlines(): print(line) 두가지 방법엔 큰 차이는 없고, 위의 A 방법으로 파일을 불러와서 뭔가를 실행하고 나면 close()를 따로 마지막에 해줘야 한다. 이렇게 하지 않아서 큰 문제가 된 적은.. 2021. 9. 12.
[스파르타코딩클럽] 요즘 힙한 취미, 코딩 스파르타코딩클럽에 무료강의 네가지가 풀렸습니닷!!! (시켜줘 스파르타 마케터) 요즘 힙한 취미, 코딩 어떠심니까.. 여행/음악/아트/운동/게임 분야마다 입장권이 있고 자신의 취미에 가까운 것을 클릭하면 응모시작! 48시간 동안 스파르타의 품격있는 4가지 프로모션 강의를 듣고, 목표를 달성하면 응모 완료!!! 자 각설하고, 첫번째 숙제인 연예인 이미지검색으로 사진 쓸어담기 크롤러!!! **본 코드는 크롤러 접근을 거부하는 네이버의 robots.txt와 관계 없이 쓰여진 예제 코드로 영리적 목적으로 사용하지 않았습니다. 미안해요 네이버 다음부터는 오픈api 쓸게요...!! import time import dload from selenium.webdriver import Chrome from selenium.. 2021. 9. 11.
[파이썬으로 웹스크래핑] 에러? 또 에러?! 셀레니움으로 막힘 없이 스크랩하기 내가 앞에서 쓴 글, 혹은 다른 곳에서 셀레니움을 동작하는 방법을 익힌 분들이 셀레니움이 특정 페이지에서 요소를 못찾거나 하는 이유로 프로그램 자체가 정지해버려 다시 처음부터 자료를 쌓아야 했다거나, 그런 오류(예외)를 막기 위해 try: except: 구문을 남발했더니 코드가 지저분해졌다-하는 이의제기를 해주셔서 글을 작성해본다. 첫번째, 보통 만나게 되는 오류들 브라우저 드라이버를 자유롭게 다루는 셀레니움은 그 기능만큼이나 다양한 오류를 개발자에게 가져온다. 그 중 "웹스크래핑"을 시도하는 개발자에게 자주 보이는 오류들을 선정해본다. (전체 익셉션은 여기에) NoSuchElementException - "예? 그런 엘리먼트(태그) 없는데요?" 에러 ElementNotSelectableException.. 2021. 9. 4.
[파이썬으로 웹스크래핑] 셀레니움 기능탐구(2) 기다려! 대기하기 앞서 실행한 스크래핑 코드들을 보면, 프로그래밍한 코드가 동작할 때 사람의 눈보다 훨씬 빠르게 데이터를 읽어오기 때문에, 페이지가 데이터를 불러오기도 전에 당장 눈 앞에 보이는 껍데기 html 구조만 가져오거나 하는 참사가 발생할 수 있었습니다. 혹은 엘리먼트를 선택하려고 하는데 아직 그 엘리먼트가 클릭가능한 상태가 아닌데 클릭하려고 해서 에러가 발생하고 드라이버가 종료될 수도 있지요. 자 이 부분을 어떻게 해결하면 좋을지 고민해 봅시다. 1. 파이썬 내장 모듈 time 사용하기 가장 간단한(무식한) 방법이지만 성능은 확실한 친구입니다. sleep()이라는 간단한 메소드를 사용할 수 있는데, 괄호 안에 파라미터로 숫자를 넘기면, n초 동안 아무 동작을 하지 않고 기다립니다. 셀레니움 외에도 어떤 코드를 .. 2021. 8. 11.
[파이썬으로 웹스크래핑] 셀레니움 기능탐구(1) 요소찾기 자꾸 뭔가 좀 설명하려다가 코드 하나 가져와서 참 쉽죠?를 반복하니까 아는 사람만 재미있게 보고 깜깜이인 초보자 분들은 힘들 수도 있겠다는 생각이 들어 핵심적인 기능 소개를 몇가지 해보고자 합니다ㅎㅎ 한번 들어봐주세요. 셀레니움은 웹드라이버를 조작하는 라이브러리입니다. 사실 셀레니움은 웹스크래핑만을 위해 개발되어진게 아니고 그것이 주목적도 아닙니다. 오히려 웹개발 과정에서 가상의 유저의 행동을 만들어내 그 유저가 정해진 행동을 하도록 만들어내는 게 주목적에 더 가까운 것 같습니다. 제가 만든 로그인 페이지에 셀레니움이 회원가입을 하고, 아이디와 비밀번호를 기입해 로그인하고 사이트를 사용하는 과정을 지켜보면서 "아 여기서 이게 펼쳐지면 안되는군","아 이 부분이 대기시간이 긴 편이네" 할 수 있는 것이지요.. 2021. 8. 11.
[파이썬으로 웹스크래핑] 가슴이 웅장해지는 셀레니움을 araboja.. 꺄꿍 지난 번에 requests와 BeautifulSoup을 사용해 보면서, 웹이 처음으로 html으로 나타날때 requests를 get해 오는 특성 탓에, 여러가지로 부족한 스크래퍼를 만들 수 밖에 없었죠? 결과물이야 나쁘지 않았지만, 각 탭에서 초기에 나타나는 8개의 글만 스크랩해오고 스크롤을 내려야 나타나는 게시물을 못 가져온다던지, 그런 문제들 말이죠..!! 자 문제점을 파악했으니 어떻게 해결하면 좋을까요? 스크롤을 해야겠죠? 그런데 requsets는 브라우저를 실제로 띄우는 것도 아니다 보니 직접 스크롤을 해주기도 힘들어 보입니다. 여러분이 스크랩하고 싶은 어떤 사이트는, 자세히 보기 혹은 더보기 버튼을 눌러야 모든 게시물이 보일 수도 있고, 아니면 로그인을 해야만 볼 수 있는 게시물이 있을 수.. 2021. 8. 10.
[파이썬으로 웹스크래핑] 뷰티풀숲, 오오 아름다운 수프여! 앞선 글에서 제대로 다루지는 않았지만, 대부분의 웹사이트의 데이터는 그것을 제작한 회사의 고유 저작물입니다. 이것을 스크랩하고 사용, 특히 영리적으로 이용하는 것은 법적인 책임을 각오해야 할 가능성이 있음을 미리 밝힙니다. 이것을 방지하기 위해서는 해당 도메인의 robots.txt를 참고하는 것이 좋습니다. 가장 상위 도메인 (예: blog.naver.com이 아닌 www.naver.com) 확인 필수. 이걸 어기면 당장 쇠고랑 차고 어떻게 되는 것은 아닌데, 네이버의 경우 십몇년 전에 일본 진출 과정에서 네이버봇이 robots.txt를 무시하는 크롤러를 사용한 이유로 시장에서 퇴출되다시피 했었던 전례가 있습니다. 윤리적인 문제라고 해두죠. 저도 제 컨텐츠를 무단복사(불펌)하는 것은 싫고 대부분 사람들이.. 2021. 8. 10.
[파이썬으로 웹스크래핑] 스크랩핑? 크롤링? 그게 뭘까? 파이썬에는 웹에 있는 데이터를 긁어올 때 쓸 수 있는 다양한 라이브러리/모듈/패키지(엄연히 다른 개념이지만 차이점을 다루지는 않을 것이고, 여기서는 라이브러리로 통일할 예정이다.)가 존재한다. 그래서 파이썬 크롤링/스크래핑을 구글링 해보면 다양한 글이 많다. 그런데 막상 관련된 책을 사보려고 하면 찾아보기 힘들다. 왜 그런 것일까? 또 어떻게 시작하면 좋을까? 1. 크롤링이 뭔데? 크롤링은 단어 그대로는 Crawl, 기어가다라는 뜻이다. 철권 같은 대전게임에서 상대방의 공격을 물흐르듯 피하기 위해 낙법을 사용해 구르는 것도 크롤링이라고 부르고, 군인이 철조망 등을 통과하기 위해 낮은 포복으로 기어가는 것, 수영장에서 보통 "자유형"하면 떠올리는 영법의 이름도 크롤이다(다리를 퍼덕이면서 물살을 손으로 빠르.. 2021. 8. 9.