일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- SQL
- 한국전자통신연구원
- 지도학습
- ML
- kt aivle school
- dx
- 다변량분석
- hadoop
- 빅분기
- r
- 하둡
- 가나다영
- 시각화
- ggplot2
- 하계인턴
- kaggle
- 에이블러
- Ai
- ETRI
- 기계학습
- Eda
- python
- 빅데이터분석기사
- 소셜네트워크분석
- 서평
- cnn
- 머신러닝
- 딥러닝
- 시계열
- arima
- 에트리 인턴
- 한국전자통신연구원 인턴
- KT 에이블스쿨
- httr
- KT AIVLE
- 에이블스쿨
- matplot
- SQLD
- 프로그래머스
- 웹크롤링
Archives
- Today
- Total
소품집
[웹 크롤링] 퍼센트 인코딩을 활용한 웹크롤링 실습 본문
728x90
퍼센트 인코딩이란?
- 퍼센트 인코딩(percent-encoding)이란 URL에 사용되는 문자를 인코딩 하는 방식이며 URL 인코딩이라고도 합니다. 아울러, 한글 인코딩 방식에 따라 결과가 달라집니다.
- 퍼센트 인코딩 된 문자열을 디코딩하면 우리가 볼 수 있습니다. (urltools 패키지)
library(urltools)
# 문자열 하나를 설정합니다. windows에서 설정했다면 CP949 방식을 따릅니다.
string <- '소다영'
string %>% url_encode() # [1] "%bc%d2%b4%d9%bf%b5"
POST 방식 웹 크롤링 실습1
전화번호부 페이지 - https://www.isuperpage.co.kr/
# searchWord
URL <- 'https://www.isuperpage.co.kr/search.asp'
string <- '%C7%D1%BD%C4'
string %>% url_decode()
# 퍼센트 인코딩
cityNm <- '서울'
cityNm %>% url_encode()
# POST()함수의 body인자에 할당할 검색어를 지정합니다.
upjong <- '일식'
cityNm <- '서울'
guNm <- '강남구'
# post 방식으로 http 요청
res <- POST(url = URL,
body= list(serchWord=upjong %>% url_encode()%>% I(),
city=cityNm %>% url_encode() %>% I(),
gu=guNm %>% url_encode() %>% I()),
encode = 'form')
# 보기좋게 출력
res %>% as.character() %>% cat()
# 서버의 로케일을 파악해서 제대로 변환하기
# 로케일의 인코딩 방식에 따라 퍼센트 인코딩 방식을 달리하는 함수 생성 (EUC-KR로 인코딩 방식을 채택한 웹서버에서만 적용됨)
pcntEncoding2Euckr <- function(string) {
# 로케일의 인코딩 방식을 확인합니다.
if (localeToCharset() == 'UTF-8') {
string <- string %>% iconv(from = 'UTF-8', to = 'EUC-KR')
} else if (localeToCharset() %in% c('CP949', 'EUC-KR')) {
string <- string
}
return(I(url_encode(string)))
}
# 제대로 유알엘 따오기
res <- POST(url=URL,
body = list(searchWord = upjong %>% pcntEncoding2Euckr(),
city=cityNm %>% pcntEncoding2Euckr(),
gu=guNm %>% pcntEncoding2Euckr()),
encode = 'form')
# POST 방식으로 HTTP 요청
URL <- 'https://www.isuperpage.co.kr/search.asp'
res <- POST(url=URL,
body=list(searchWords=upjong %>%
url_encode() %>%
I(),
city=cityNm %>%
url_encode()%>%
I(),
gu=guNm %>%
url_encode()%>%
I()),
encode='form')
정보수집
!! 업체명 추출
store <- res %>%
read_html() %>%
html_nodes(css='div.tit_list a.l_tit') %>%
html_text() %>%
as.data.frame()
!! 주소추출
address <-res %>%
read_html() %>%
html_nodes(css='div.l_cont2 span.loadv') %>%
html_text() %>%
as.data.frame()
!! 전화번호 추출
call <- res %>%
read_html() %>%
html_nodes(css='div.l_cont span.phone') %>%
html_text() %>%
as.data.frame()
연습문제
- 업체의 전화번호와 주소를 추출하여 업체명까지 넣어 데이터 프레임으로 생성하세요.
- 화면을 찍어서 eclass에 오늘중으로 올립니다.
store <- res %>%
read_html() %>%
html_nodes(css='div.tit_list a.l_tit') %>%
html_text()
call <- res %>%
read_html() %>%
html_nodes(css='div.l_cont span.phone') %>%
html_text()
address <- res %>%
read_html() %>%
html_nodes(css='div.l_cont2 span.loadv') %>%
html_text()
a<- cbind(store,call,address)
a<- as.data.frame(a)
728x90
'Web crawling' 카테고리의 다른 글
[웹 크롤링] KOSPI 200 기업 (0) | 2020.04.25 |
---|---|
[웹 크롤링] JavaScript로 된 html 불러오기 (0) | 2020.04.13 |
[웹 크롤링] 웹크롤링 쿠키 이용 (0) | 2020.04.09 |
[웹 크롤링] 웹 크롤링 프로세스의 이해 (0) | 2020.04.09 |
[웹 크롤링] R로 네이버 실검 크롤링 하기 (0) | 2020.03.30 |
Comments