uipath에서 뉴스 스크레핑을 하려고 찾아보니까 네이버 검색 api가 있는걸 알게되었습니다.
검색 > 블로그 - Search API
검색 > 블로그 블로그 검색 개요 개요 검색 API와 블로그 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API
developers.naver.com
네이버 api를 사용하기위한 설정과 코드를 공유하고자 합니다.
네이버 애플리케이션 등록
네이버 api를 사용하려면 우선 애플리케이션을 등록하여 client id, client secret를 발급 받아야 합니다.
Application > 애플리케이션 등록
애플리케이션 - NAVER Developers
developers.naver.com
Application > 내 애플리케이션 메뉴의 아래에 등록한 애플리케이션 이름으로 하위 메뉴가 생깁니다.
애플리케이션 이름을 클릭하면 개요 탭에서 애플리케이션에 부여된 클라이언트 아이디와 클라이언트 시크릿을 확인할 수 있습니다.
request
requestUrl
https://openapi.naver.com/v1/search/news.json?query={0}&display=50&start=1&sort=date
invoke code - request
' request 설정
Dim request As System.Net.HttpWebRequest = CType(System.Net.WebRequest.Create(requestUrl), System.Net.HttpWebRequest)
request.Method = "GET"
request.ContentType = "application/json"
request.Headers.Add("Accept-Charset", "utf-8")
request.Headers.Add("X-Naver-Client-Id", "클라이언트 아이디")
request.Headers.Add("X-Naver-Client-Secret", "클라이언트 시크릿")
'request response
Try
Dim response As System.Net.HttpWebResponse = CType(request.GetResponse(), System.Net.HttpWebResponse)
Dim reader As New System.IO.StreamReader(response.GetResponseStream())
responseData = reader.ReadToEnd()
' 리소스 해제
response.Close()
reader.Close()
' error
Catch e As Exception
responseData = "Error - "& e.Message & " | source - " & e.Source
End Try
response
{
"lastBuildDate":"Fri, 25 Apr 2025 13:11:29 +0900",
"total":298148,
"start":1,
"display":100,
"items":[
{
"title":"충주시, 읍·면 도시가스 공급 10개년 계획 수립",
"originallink":"https:\/\/www.ccreview.co.kr\/news\/articleView.html?idxno=329314",
"link":"https:\/\/www.ccreview.co.kr\/news\/articleView.html?idxno=329314",
"description":"소규모 <b>LPG<\/b> 배관망 구축사업으로 대체해 별도로 예산을 편성, 불균형을 해소할 예정이다. 시는 지난 2015년부터 2024년까지 동량면 용대문화 마을 외 7개 마을 575세대에 42억원을 투입해 마을 단위 소규모 <b>LPG<\/b> 배관망... ",
"pubDate":"Fri, 25 Apr 2025 12:42:00 +0900"
},
{
"title":"[더벨][조선 기자재 키플레이어]세진重, 매출 감소에도 이익 확대…'국...",
"originallink":"https:\/\/www.thebell.co.kr\/free\/content\/ArticleView.asp?key=202504211948273040104736",
"link":"https:\/\/www.thebell.co.kr\/free\/content\/ArticleView.asp?key=202504211948273040104736",
"description":"세진중공업은 국내 조선 기자재 기업 중 유일하게 <b>LPG<\/b> 탱크를 제조한다. 또 다른 고수익성 제품으로 꼽히는... 주력 제품인 <b>LPG<\/b> 탱크와 데크하우스가 시장 상황과 잘 맞물렸다. 세진중공업의 포트폴리오는 크게... ",
"pubDate":"Fri, 25 Apr 2025 12:42:00 +0900"
},
...
]
}
언론사 추출
추가로 언론사 정보는 제공해주지 않기 때문에 originallink로 확인해서 치환하는 방식으로 추출 합니다.
참고 블로그
네이버 API 검색 결과에서 언론사 이름 추출하기
네이버 API로 뉴스를 검색할 때, 각 뉴스 항목에는 originallink라는 링크만 포함되어 있어 어느 언론사에서 제공한 뉴스인지 식별하기 어렵습니다. 언론사별로 고유한 originallink의 도메인명을 통해
nickdeveloper.co.kr
json_site
[
{
"site": "insight",
"kor": "인사이트"
},
{
"site": "topstarnews",
"kor": "톱스타뉴스"
},
{
"site": "yna",
"kor": "연합뉴스"
},
{
"site": "hankookilbo",
"kor": "한국일보"
},
{
"site": "mbn",
"kor": "mbn뉴스"
},
...
]
invoke code - 언론사 치환
'json 목록에 치환할 언론사가 있다면 치환
Dim matchedKor As String = Nothing
Dim originalLink As String = json_item("originallink").ToString
' 언론사 list 확인후 치환
For Each entry As JObject In json_site
Dim site As String = entry("site").ToString()
If originalLink.Contains(site) Then
matchedKor = entry("kor").ToString()
Exit For
End If
Next
' 목록에 없다면 링크에서 호스트 이름 추출
If String.IsNullOrEmpty(matchedKor) Then
Dim uri As New System.Uri(originalLink)
Dim hostname As String = uri.Host.ToLower()
' www. 또는 news. 제거
hostname = System.Text.RegularExpressions.Regex.Replace(hostname, "^(www|news)\.", "")
' 우선 .co.kr, .or.kr 등 복합 도메인 제거
hostname = System.Text.RegularExpressions.Regex.Replace(hostname, "\.(co|or|go)\.kr$", "")
' 최상위 도메인 제거 (co.kr, com, net 등)
hostname = System.Text.RegularExpressions.Regex.Replace(hostname, "\.(co|kr|com|net|org|jp)$", "")
matchedKor = hostname
End If
output
언론사 목록에 없다면 도메인 이름을 표시하고, 목록에 있다면 kor로 치환하게 설정하였습니다!
{
"title":"[더벨][조선 기자재 키플레이어]세진重, 매출 감소에도 이익 확대…'국...",
"link":"https:\/\/www.thebell.co.kr\/free\/content\/ArticleView.asp?key=202504211948273040104736",
"writer": "thebell"
}
{
"title":"[더벨][조선 기자재 키플레이어]세진重, 매출 감소에도 이익 확대…'국...",
"link":"https:\/\/www.thebell.co.kr\/free\/content\/ArticleView.asp?key=202504211948273040104736",
"writer": "더벨"
}
'Study > RPA | Uipath' 카테고리의 다른 글
[UiPath] 비밀번호 복호화 사용 - Invoke Code (0) | 2025.04.28 |
---|---|
[UiPath] 비밀번호 암호화 사용 - Invoke Code (0) | 2025.04.28 |
[UiPath] UiPath License 사용방법 (0) | 2025.04.17 |
[UiPath] Autopilot - Context Grounding - Orchestarator Storage Bucket (0) | 2025.04.17 |
[UiPath] Autopilot - Autopilot for Everyone (0) | 2025.04.17 |