웹 + 크롤링
웹 = 전세계의 인터넷으로 연결되어 있는 컴퓨터들의 저장 " 공간"
(여기서 웹을 "공간"의 개념으로 이해 할 것)
크롤링 = 자유롭게 돌아다니면, 정보를 "수집"하는 행위
정보를 수집하는자
(클라이언트) 서비스 요청
정보를 갖고 있는자
(서버) 서비스 제공
"크롤러를 만든다는 것은 브라우저를 대신하는 프로그램을 만든다는 것"
"브라우저를 통해 우리는 어떻게 웹 상에서 정보를 얻는가?"
1. 브라우저에 URL을 입력하여 원하는 웹페이지에 접근한다.
2. 전체 페이지 중에서 원하는 정보를 찾는다.
"크롤링해야 하는 데이터는 누구인가"
웹상의 데이터 -> HTML 혹은 JSON
HTML 의 핵심정리
1. HTML은 태그들로 이루어졌다.
2. 태그에 정보가 들어가 있다.
3. 태그는 계층적인 구조로 구성되어 있다.
최상위 태그 <html> -> 그아래 <head><body>
<html> : 시작태그
<head>...</head>
<body>...</body>
</html> : 끝태그
<h2 class="media_end_head_headline"> <- 태그 속성: 태그의 세부정보를 적어놓는다.
"화면 대폭 키운 16인치 아이패드 내년에 나온다
</h2>
<h2>
내년 아이패드 16인치 나온다!
</h2>
태그 = 시작태그 + 하위태그/text + 끝태그
<a herf> : 하이퍼 텍스트(하이퍼링크 , 파란색글씨, 클릭시 이동)
속성 = 태그의 세부정보
이 a 태그는요
1)href 는 "~~~" url 입니다.
2)class 는 news_tit 입니다. // 클래스는 뉴스타이틀이다
3)title 은 "오늘부터 18~59세도 ~~" 입니다. // 뉴스 기사의 제목
만약 코로나에 관련된 기사를 크롤링 하고 싶다면? 뉴스기사 제목-> href를 가져옴 -> 기사제목도 가져오면 좋음
무엇을 가져와야하는지 알아야 크롤링을 할 수 있다.
어떻게하면 바디태그 중에서 내가 가져오가자 하는 A태그만 가져 올 수 있을까 생각한다.
그럼 웹크롤러 프로그램은 어떻게 만들어야 할까?
크롤러를 만든다는 것은 브라우저를 대신하는 프로그램을 만든다.
1. 브라우저의 URL을 입력하여 원하는 페이지를 접근한다.
2. 전체 페이지 중에서 원하는 정보를 찾는다.
" 2가지 파이썬 라이브러리가 필요하다 "
1. requests
2. BeautifulSoap
" 그 중 각각 1개의 함수가 필요하다"
1. get(request) : 원하는 웹페이지 정보 가져오기
2. select(BeautifulSoap) : (웹페이지중) 원하는 정보 가져오기
// 크롤링은 결국은 2단계다. 웹페이지를 get 한 후 에 원하는 태그만 select 한다 (겟셀렉트)
(1단계)
웹페이지 = requests.get(url)
* url 이해하기
url= 프로토콜// 주소값 /리소스 경로 ? 쿼리스트링
*쿼리 스트링 : 페이지에대한 세부 정보
시행1) 네이버 코로나 뉴스 -1
requests.get(https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%BD%94%EB%A1%9C%EB%82%98)
html = requests.get(해당url)
해당 html이 있기를 기대함.
시행2) 네이버 코로나 뉴스 -2
requests.get(https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%BD%94%EB%A1%9C%EB%82%98&sort=0&photo=0&field=0&pd=0&ds=&de=&cluster_rank=24&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so:r,p:all,a:all&start=11)
시행3) 네이버 코로나 뉴스 -3
requests.get(https://search.naver.com/search.naver?where=news&sm=tab_pge&query=%EC%BD%94%EB%A1%9C%EB%82%98&sort=0&photo=0&field=0&pd=0&ds=&de=&cluster_rank=83&mynews=0&office_type=0&office_section_code=0&news_office_checked=&nso=so:r,p:all,a:all&start=21)
시행 1, 2 차이점은 쿼리스트링만 다르다
start가 10씩 증가하는 모습을 볼수있다. 여기서 규칙을 찾으면된다
서로다른 URL을 여러번 리퀘츠를 해야 한다.
//쿼리스트링안의 세부정보가 보인다, 그 안에서 규칙을 찾는다!
(2단계)
" 웹페이지에서 원하는 정보를 가져오는 것은 해당 태그를 지정해주면 된다 "
웹페이지.select(원하는 정보(->태그 지정))
* 태그 이해하기
태그 = <시작태그(이름+속성)> 하위태그 + text </끝태그>
(1) (2) (3) (4)
" 이름과 속성을 명시해줌으로써 내가 원하는 태그만 지정해줘야한다"
"내가 원하는 태그를 표현할 수 있는 방식은 크게 두가지다"
1️⃣ ~ 한 속성을 가진 태그들 -> 속성
2️⃣ ~ 태그 하위에 있는 태그 -> 계층 구조
* 우리가 가져와야 하는 부류의 데이터들은 같은 부류이기에 1️⃣속성 과 2️⃣계층구조 가 같다!
(내가 가져오고자 하는 걸 보면 구조적으로 같은 구조, 위치에 있다)
브라우저 유저 친화적으로 만들었다. 크롤러가 편하게 x
'bootcamp' 카테고리의 다른 글
[웹크롤링] 썸네일 이미지 가져오기 (0) | 2022.10.28 |
---|---|
[웹크롤링] 실습-2 (0) | 2022.10.28 |
[웹크롤링] 실습 - 뉴스와 url 링크를 크롤링 하여 엑셀자료 만들기 (0) | 2022.10.27 |
[웹크롤링] 네이버 뉴스, 검색어를 통한 웹 크롤링 (0) | 2022.10.27 |
[텍스트마이닝] 텍스트마이닝 입문 (0) | 2022.10.26 |