하이드로켐로고

(주)하이드로켐
HOME 공지사항

고객지원

  • 고객지원
  • 온라인문의
  • 고객지원

    CONTACT US 031-8084-3686

    평일 오전9시 - 오후6시
    토,일,공휴일 휴무

    온라인문의

    교육용 앱02-멘티미터 워드클라우드

    페이지 정보

    profile_image
    작성자 Lamis
    댓글 댓글 0건   조회Hit 35회   작성일Date 24-08-15 15:47

    본문

    11일차240718안녕하세요!! 워드클라우드 서영입니다 ????어제 파이썬 기초가 끝나고 오늘부터 데이터 수집 및 시각화를 본격적으로 배우기 시작했어요????오전에는 간단하게 인터넷과 HTML, CSS에 대해 배운 뒤 오후에 본격적으로 코랩을 사용해 크롤링 실습을 했습니다!​1. 인터넷 프로그래밍 입문* IP 주소: 인터넷에 연결된 모든 컴퓨터에 부여되는 고유의 식별 주소. 0.0.0.0부터 255.255.255.255까지의 주소를 사용할 수 있습니다.* 도메인 이름(Domain Name): 숫자로 된 IP주소보다 기억하기 쉽도록 만든 명명체계.- 국제적 도메인: com (상업적 기관), net(네트워크 관리 기관), org(비영리 기관), edu(교육기관), gov(정부기관), mil(군사기관), int(국제단체)- kr 도메인: ac(대학), co(기업), or(비영리 기관), go(정부기관), ne(Network관리기관), re(연구소), es(초등학교), ms(중학교), hs(고등학교), sc(기타학교), seoul(서울특별시), pe(개인)정해진 명명법에 따라 이름을 지어야 하므로, 데이터의 신뢰성을 판단할 때 도메인 이름이 gov 등인지 확인해 볼 수 있습니다.* 도메인이름서버(DNS, domain name server): 도메인 이름을 IP주소로 변환시켜 도메인 이름으로 해당 주소로 이동할 수 있도록 하는 시스템입니다.* URL(Uniform Resourse Locator): 웹 상에서 서비스를 제공하는 각 서버들에 있는 파일들의 위치를 명시하기 위한 체계로, 접속해야 될 서비스의 종류, 서버의 위치(도메인 이름), 파일의 위치를 포합합니다. * ‘프로토콜://정보를 가진 컴퓨터 이름/디렉터리 이름/파일명’* HTML(Hypertext Markup Language): SGML을 근거로 만들어진 문서화 언어의 한 종류로, 월드와이드웹(WWW)에서 하이퍼텍스트 문서를 작성 시에 사용되는 기본 언어입니다.태그를 문서에 부가하는 형식으로, 다양한 종류의 태그로 구성됩니다.과 같이 시작태그와 워드클라우드 종료태그가 한 쌍으로 구성되는 것이 일반적입니다.시작태그 안에는 속성을 지정할 수 있고, 속성과 속성, 태그명과 속성은 공백으로 구분합니다.속성은 속성값을 가질 수 있는데, 큰따옴표()를 사용해 나타내는 것이 일반적입니다.​HTML 문서의 기본구조 HTML문서는 ;부문에 나타나는 것이 일반적입니다. 주로 크롤링해야 하는 내용은 태그 안에 존재하는 경우가 많습니다.* 문단태그: 문단의 구분이나 정렬을 수행하는 데 사용되는 태그입니다. 태그: 문단을 구분하는 태그로써 문단과 문단을 나눌 때 사용합니다. P는 Paragraph의 약어입니다. 종료태그 없이도 사용 가능하며 여러 개를 지정하더라도 동일한 효과를 나타냅니다.​* 목록태그: 여러 개의 항목을 글머리기호와 함께 나열한 것으로, 순서화된 목록과 순서가 없는 목록으로 구분됩니다.태그를 사용해 목록을 나열하면 자동으로 숫자가 부여됩니다.태그: 순서가 없는 목록을 만들 때 사용합니다. 글머리기호의 모양을 지정하는 type 속성을 이용할 수 있습니다.;태그를 붙여 사용합니다.* 하이퍼링크 태그 - 태그: Anchor 태그의 약어로, href 속성을 이용해 이동해야 할 문서를 지정할 수 있습니다.태그와 태그 사이의 값보다, href 속성값이 링크라는 정보를 가지고 있으므로 href 값에 더 주의해야 합니다.* 이미지 태그 - 태그: src 속성 안에 이미지 경로명과 파일명을 담아 HTML에서 이미지를 삽입합니다.* 테이블 태그: HTML 문서 내에 표를 만들 때 사용하는 태그입니다.;로 감싸져 있습니다.태그: 테이블에 행(row)을 삽입하는 태그태그 안에서만 사용되는 태그로 행 안에 셀을 만들어 주는 태그​* 워드클라우드 입력태그태그로 감싸서 입력받은 내용을 한번에 서버로 보낼 수 있습니다.태그 내에 기술되어야 하며, 간단한 입력상자를 작성하거나, 라디오버튼 또는 체크박스를 만들 때 사용됩니다. type 속성에 따라 모양이 변경됩니다 (type =text, checkbox, radio&quot등 존재)팝업메뉴, 리스트박스: 라디오버튼과 체크박스 대신 사용할 수 있습니다. 팝업메뉴는 한 번에 한가지 항목만 선택할 수 있고, 리스트박스는 동시에 여러개 선택이 가능합니다. 태그를 이용해 구성합니다.태그: 두 줄 이상의 의견을 입력받고자 할 때 사용합니다.2. CSS(Cascading Style Sheet)CSS는 HTML문서에서 스타일에 관련된 부분을 별도로 분리하여 정의할 수 있도록 지원하는 기능으로, 특정 정보만 추출하고 싶을 때 CSS로 구분하여 추출할 수 있습니다.* 클래스 선택자: class 속성으로 태그에 스타일을 적용합니다. 해당 클래스명이 속성으로 정의된 모든 태그의 내용에 공통의 스타일을 적용하게 됩니다.* ID 선택자: ID 속성값으로 스타일을 적용합니다. 클래스 속성값은 한 문서 내의 여러 태그에 나타날 수 있는데 반해, ID속성값은 한 문서에 한번만 사용할 수 있다는 점에서 차이가 있습니다. 따라서 ID값으로 특정값만 추출할 수 있고, 이에 따라 특정 태그를 식별할 수 있습니다.3. 네이버 언론사별 랭킹뉴스 크롤링데이터 수집 - 사이트 접속 - 크롤링의 순서로 데이터 크롤링을 진행합니다.크롤링 방법은 정적 크롤링과 동적 크롤링 두 가지가 있으며, 사이트에 따라 방법을 선택합니다.크롤링하고자 하는 페이지에서 우클릭으로 페이지 소스 보기를 한 워드클라우드 뒤 소스코드가 모두 담겨 있으면 정적 크롤링 방법을 사용하고, 그렇지 않으면 동적 크롤링 방법을 사용합니다.1. 정적 크롤링: 편하고 빠른 방법으로, 우선순위로 두는 크롤링 방법입니다.정적 크롤링이 가능한 소스 코드 모습2. 동적 크롤링정적 크롤링이 불가능한 소스 코드, 동적 크롤링 사용해야 한다.3-1. 패키지 설치 및 임포트구글 코랩을 통해 코딩을 진행 할 때에는 컴퓨터에 라이브러리를 다운받는 것이 아니라 클라우드에 저장하는 것이기 때문에, 기본적으로 코랩에서 제공되는 라이브러리가 아닌 경우 매번 라이브러리 파일을 설치해 주어야 합니다.3-2. 네이버 언론사별 랭킹뉴스 - 많이 본 뉴스 크롤링네이버 랭킹뉴스 페이지의 언론사별 많이 본 뉴스를 크롤링하여 데이터프레임에 저장하는 것을 목표로 합니다.먼저 랭킹뉴스의 URL을 문자열 형식으로 가져오고, urlopen 함수를 이용해 해당 주소의 html을 가져옵니다.이후 BeautifulSoup 라이브러리를 활용해 html의 태그를 파싱해 변환합니다.* 파싱: HTML 태그를 찾아 특정 정보만 모읍니다.이후 본격적으로 html에서 정보가 들어있는 태그를 찾고 정보값을 모아 줍니다.네이버 언론사별 랭킹뉴스의 많이 본 뉴스 페이지는 크게 위와 같은 태그로 분류됩니다.위 순서에 맞게 태그를 찾는 것을 반복해 주면 페이지에 있는 언론사별 뉴스 정보를 크롤링할 수 있습니다.네이버 랭킹뉴스 소스 코드먼저 언론사를 구별해 주는 가장 큰 박스인 태그를 찾아줍니다.이 div 태그는 rankingnews_box라는 클래스를 가지고 있으므로, 클래스를 이용해 언론사별 박스를 구별합니다.박스의 리스트를 만들었다면, 박스 안에 워드클라우드 들어 있는 정보들을 추출합니다.각 박스(div 태그) 안에서 언론사명은 태그 안에 존재하므로, .text를 이용해 태그와 태그 사이 존재하는 언론사명을 추출하고 press 변수에 저장합니다.이후 ul 태그를 찾고, 그 안에 있는 5개 순위 기사 정보를 추출합니다.태그에서 각 기사별 순위, 제목, 링크를 수집합니다.* .attrs[] : 태그의 속성 정보를 가져옵니다.​각 박스에 존재하는 뉴스 기사가 5개보다 적을 경우, for 문을 게속 처리하다가 태그를 찾지 못해 오류가 발생할 수 있습니다. 데이터 크롤링 과정에서 오류가 발생하면 코드가 멈추므로, 데이터를 수집하다가 멈추게 되면 저장하지 못하고 지금까지 크롤링한 데이터를 잃어버릴 수 있습니다. 따라서, 데이터를 날리지 않도록 예외사항이 존재할 수 있는 곳(오류가 발생할 수 있는 곳)에 try / except 구문을 사용해 줍니다. ​datetime 라이브러리를 사용하여 동시에 수집일자를 출력해 줍니다. timezone을 설정해 주지 않으면 미국 시간대로 출력되므로, 한국 시간대로 출력될 수 있도록 설정해줍니다.기사의 순위는 태그 안에 존재하고 'list_ranking_num'클래스를 가집니다.기사의 제목은 태그 안에 존재합니다.기사의 링크는 같은 ;태그의 속성에 존재합니다.​크롤링 진행 상황 출력 / 크롤링 데이터 info최종적으로 수집이 완료된 데이터3-3. 크롤링한 데이터 저장하기최종적으로 수집이 완료된 데이터를 csv 파일로 저장합니다. 한글이 포함되어 있으므로, 오류가 나지 않도록 encoding을 utf-8-bom 타입으로 저장합니다.​4. 크롤링한 데이터 시각화4-1. 라이브러리 임포트차트 분석과 형태소 분석, 시각화를 위한 라이브러리를 임포트해줍니다.4-2. 워드클라우드 워드클라우드를 위한 전처리워드클라우드를 그리기 위해서는 텍스트 형식으로 전달해야 하므로, 먼저 기사 제목을 텍스트 뭉치로 변환합니다.텍스트 뭉치 변환 결과4-3. 워드클라우드 시각화워드클라우드 라이브러리를 이용해 워드클라우드를 생성합니다.출력한 워드클라우드5. 많이 본 뉴스와 댓글이 많은 뉴스 비교하기5-1. 댓글이 많은 뉴스 크롤링많이 본 뉴스와 댓글이 많은 뉴스는 태그가 동일한 형태로 구성되어 있습니다. 3에서 한 크롤링 코드를 수정하여 댓글이 많은 뉴스를 크롤링하고, 데이터프레임에 담습니다.5-2. 댓글이 많은 뉴스 워드 클라우드를 위한 전처리 / 워드 클라우드 생성댓글이 많은 뉴스 또한 제목을 텍스트 뭉치로 변환하여 워드 클라우드를 만들 수 있도록 합니다.5-3. 많이 본 뉴스와 댓글이 많은 뉴스 워드클라우드 시각화많이 본 뉴스와 댓글이 많은 뉴스 워드클라우드를 한 캔버스에 출력하고자 합니다.워드클라우드 출력 결과6. 많이 본 뉴스와 댓글이 많은 뉴스의 명사 TOP 10 비교6-1. 기사 제목 텍스트 변환워드클라우드에서 사용한 방법과 같이, .join()을 이용해 기사 제목을 텍스트로 변환합니다.6-2. 명사 단어 추출한국어 형태소 분석 라이브러리를 이용해 뉴스 제목에서 명사 단어를 추출합니다.한국어 형태소 분석 라이브러리에는 Komoran, Kkma, Okt 등이 존재하는데, Kkma는 엄격한 기준을 가지며, Okt는 러프한 분석 기준을 가지고 소셜 미디어 분석에 적합합니다. 이번 명사 추출에는 Kkma와 Okt의 중간 정도인 Komoran을 사용합니다.한 글자 단위의 명사는 부정확성이 크므로, 글자수가 2개 이상인 단어만 사용합니다. query를 워드클라우드 이용합니다.6-3. 단어 빈도표 만들기이후 2개 이상인 단어에 대해 단어의 빈도표를 만듭니다.6-4. 단어 빈도 막대그래프 그리기이후 단어 빈도 막대그래프를 그립니다. 시각화 자료를 바탕으로 가장 많이 본 뉴스와 댓글이 많은 뉴스의 단어 빈도 수를 비교합니다.가장 많이 본 뉴스와 댓글이 많은 뉴스의 단어 빈도 수 막대그래프7. 네이버 연예 공감별 랭킹 뉴스 크롤링​교수님과 함께 크롤링을 해 본 후, 네이버 연예 공감별 랭킹 뉴스 크롤링을 개인적으로 진행했습니다.다음 정보들을 수집하는 것을 목표로 크롤링을 진행했습니다.순위, 공감종류, 기사제목, 기사링크, 기사내용, 공감수, 수집일자 데이터 수집공감 6가지에서 30위까지 - 총 180건의 기사 정보 수집​7-1. 라이브러리 설치 및 임포트7-2. '좋아요'공감별 랭킹뉴스 크롤링연예 랭킹 뉴스 태그 구성연예 랭킹뉴스는 기사별 박스로 구별되어 있으며, class를 _inc_news_lst3_rank_reply로 가지는 태그로 구별 가능합니다.뉴스의 순위는 태그 안에 존재하고,뉴스의 제목은 ;태그 안에 존재하고, 뉴스의 내용은 태그 안에 존재하고,공감수는 태그 안에 존재합니다.​여러 종류의 공감별 뉴스를 크롤링 하기 전, 먼저 크롤링이 잘 작동하는지 보기 위해 언론사별 많이 본 랭킹 뉴스 코드를 참고하여 '좋아요'에서만 크롤링 코드를 짜 보았습니다.이번에 크롤링 할 페이지에는 따로 태그로 바로 기사들을 구별합니다.이후 찾고자 하는 정보들에 맞는 태그를 찾아 추출하고, 변수에 저장하여 데이터프레임에 저장합니다.위와 같은 방식으로 진행했을 때, 성공적으로 크롤링이 진행되었다는 것을 알 수 있었습니다.따라서 추가로 워드클라우드 확장하여 반복문을 사용해 다른 모든 공감들도 크롤링 할 수 있도록 코드를 수정했습니다.​7-3. 공감별 랭킹뉴스 크롤링따라서, 감정 종류 문자열 리스트를 만들고 이를 활용해 반복문을 사용하여 모든 종류의 뉴스를 크롤링할 수 있을것이라고 생각해 코드를 짜게 되었습니다.연예뉴스 크롤링 결과코드 실행 결과 각 공감마다 30개씩의 기사에 대해 원하는 정보값을 추출한 것을 알 수 있었습니다. (총 180 rows) 이후 csv 파일로 저장해서 확인한 결과, 성공적으로 크롤링을 완수했다는 것을 확인할 수 있었습니다.저의 경우에 코드에서 자꾸 like만 조회되고 나머지는 조회되지 않는 오류가 발생했었는데요, 알고 보니 공감수의 class 명을 'class':f'likeitnews_item_likeit like'로 고정하고 있어서 like만 계속 집계되었던 거였답니다 ... ????...페이지의 소스 구성이 공감별로 다 똑같길래 공감수의 class명 또한 다 동일할 거라고 생각했는데 그렇지 못해서 생긴 오류였어요. class명을 잘 확인하는 습관을 들여야겠다고 생각했습니다... 다들 저같은 실수 해서 3시간동안 똑같은 코드 지웠다가 썼다가 바꿨다가 어쨌다가 저쨌다가 하지 마시기를 .. . . .. . ????????????????????????????????하루에 꽤 많은 것을 배웠는데 실제로 사용해서 결과가 나오는 강의다 보니까 재밌게 들은 것 같습니다!!조금 어려웠지만 스스로 프로젝트도 도움 없이 완성해 보는 과정을 통해서 앞으로 계속 열심히 해 나간다면 잘 수행할 수 있을 것 같다는 자신감이 생겼어요.????그럼 다음 테크노트에서 만나요! 안녕〰️✌️​#ABC부트캠프 #유클리드소프트 #고용노동부 #대한상공회의소 #미래내일일경험사업

    워드클라우드

    댓글목록

    등록된 댓글이 없습니다.