Python

Python을 활용한 Crawling (네이버 지식백과)

지야소이 2023. 7. 2. 20:56

키워드 검색을 통해 연관검색어, 검색어의 뜻에 대하여 알 수 있도록 지식백과를 Crawling해보겠습니다. 

 

아래는 지식백과(naver)의 사이트 주소입니다.

 

지식백과 주소 :

 

네이버 지식백과

아이들도 이해할 수 있는 어린이 백과사전부터! 대학생 수준에 맞는 전문적인 지식까지! 다양하고, 신뢰성 있는 정보를 제공합니다.

terms.naver.com

 

 

저는 예시로 딸기를 키워드로 설정하여 해보겠습니다.

 

- 연관검색어와 딸기에 대한 각 사전에서의 뜻을 1,2,3으로 하여 가져오도록 하겠습니다.

- 내용에 대하여는 csv 파일로 저장하겠습니다. 

 

 

👉 라이브러리 활성화

# 라이브러리 활성화
import requests
import csv
from bs4 import BeautifulSoup

 

 

👉 검색어와 url 지정

# 검색어와 url 지정
noun=input("검색어를 입력하세요. ")
print()
url=f"https://terms.naver.com/search.naver?query={noun}&searchType=&dicType=&subject="
response=requests.get(url)
soup=BeautifulSoup(response.text,"html.parser")
print(soup)

- url에서 키워드가 변경되는 곳에 format형으로 지정해줍니다. 

- requests.get을 활용하여 url을 가져오고 soup를 통해 주소를 제대로 들고 오는지 확인합니다. 

 

 

 

👉 개발자도구 활용

- 개발자 도구를 통하여 가져올 내용에 대하여 확인합니다.

 

 

 

- 연관검색어를 가져올 때는 <ul class="relate_search"> 를 가져오면 된다는 것을 알 수 있습니다.

 

 

 

- 딸기의 뜻에 대하여 각 class는 info_area로 지정되어 있습니다. 

 

 

 

ul=soup.find("ul",{"class":"relate_search"})
info=soup.find_all("div",{"class":"info_area"})

- ul: 연관검색어를 가져오는 코드로 연관검색어는 하나이므로 find로 가져옵니다.

- info: 키워드에 대한 뜻을 가져오는 코드로 각 사전별로의 뜻을 가져올 것이므로 find_all로 가져옵니다.

 

 

 

👉 csv 파일로 저장

# 검색 결과를 문자열로 저장
result = [
    ["< 연관검색어 >",ul.get_text()],
    ["<",noun+"의 뜻① >",info[0].text.strip()],
    ["<",noun+"의 뜻② >",info[1].text.strip()],
    ["<",noun+"의 뜻③ >",info[2].text.strip()]
]

# 결과를 csv 파일로 저장
filename = noun + "_search_result.csv"
with open(filename, "w", encoding="cp949", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(result)

print("검색 결과가", filename,"파일로 저장되었습니다.")

-  해당 폴더에 들어가게 되면 저장된 것을 확인할 수 있습니다.