네이버의 view 페이지에서 키워드를 검색하면 나오는 사이트들을 제목과 링크로 정리해보려 합니다.
예시)
title | link |
제목 1 | 사이트 링크 1 |
제목 2 | 사이트 링크 2 |
< 웹 크롤링 >
먼저, 필요한 라이브러리를 설치해줍니다.
import urllib.request as req
from bs4 import BeautifulSoup
|
cs |
키워드를 입력받아 네이버 검색 페이지 url 링크 설정
url1 : 네이버 view 페이지 / url2 : 검색어
url1 = 'https://search.naver.com/search.naver?where=view&sm=tab_jum&query='
url2 = input('검색어를 입력해주세요: ')
url = url1 + url2
|
cs |
BeautifulSoup 라이브러리로 데이터를 파싱해줍니다.
res = req.urlopen(url).read() #링크 열고 읽기
soup = BeautifulSoup(res, 'lxml') #파싱
|
cs |
정리된 데이터 중에서 사이트 게시물의 제목과 링크를 각각 저장해줍니다.
여기에서는 find와 find_all을 사용하는 두가지 방법이 있습니다 : )
각각 title에는 제목을, link에는 페이지 링크가 저장될 수 있도록 정리했습니다.
1) find 사용 예시
blog = soup.find(class_= 'api_txt_lines total_tit _cross_trigger')
link = blog.attrs['href']
title = blog.text
|
cs |
2) find_all 사용 예시
info = soup.find_all(class_= 'api_txt_lines total_tit _cross_trigger')
for a in info:
link = a.attrs['href']
title = a.text
print(title)
print(link)
print()
|
cs |
< csv로 데이터 저장 >
csv로 데이터를 저장할 수 있도록 pandas 라이브러리를 설치해줍니다.
import pandas as pd
|
cs |
이제 저장한 title과 link 값을 DataFrame으로 합치는 과정이 필요합니다.
총 두가지 방법을 아래 정리했습니다.
1) 각각 리스트로 만들어 결합하기
title =[]
link = []
for a in info:
title.append(a.text)
link.append(a.attrs['href'])
print(title)
print(link)
df = pd.DataFrame({'title':title, 'link':link})
df = pd.DataFrame([title, link]).T # 자료 세로로 넣기
df.columns = ['title', 'link'] #칼럼 이름 설정
|
cs |
2) 데이터 나오는 순서대로 DataFrame에 값 넣기
df = pd.DataFrame(columns = ['title', 'href'])
for a in info:
df.loc[len(df), :] = [a.text,a.attrs['href']]
|
cs |
마지막으로, 데이터를 csv로 변환해서 저장해줍니다 :)
저장한 csv파일은 working directory에서 확인할 수 있습니다!
df.to_csv('link1.csv', encoding = 'cp949')
|
cs |
'Python > 머신러닝, 딥러닝' 카테고리의 다른 글
[Tensorflow] Keras를 통한 딥러닝 (ANN - 인공신경망) (0) | 2022.05.13 |
---|---|
KoNLPy 설치 및 한국어 형태소 라이브러리 비교 (0) | 2022.04.29 |
scikit-learn(사이킷 런) 활용하여 정답률 확인하기 (0) | 2022.04.28 |
TensorFlow(텐서플로우) 설치하기 (0) | 2022.04.27 |
[파이썬] 웹 크롤링 - BeautifulSoup 라이브러리 (0) | 2022.04.20 |