크롤링(1) - 네이버블로그 검색결과 크롤링

1 minute read

[파이썬 Beautifulsoup을 이용한 네이버블로그 검색결과 크롤링]

설치

pip install beautifulsoup

실습1) html 정보 가져오기

‘파이썬’이라고 검색 후 url을 복사

import urllib.request
from bs4 import BeautifulSoup

url = 'https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC' # url주소

html = urllib.request.urlopen(url).read() #url 주소를 읽음
soup = BeautifulSoup(html,'html.parser')

print(soup)

실행결과 : url에 있는 html 정보를 가져옴

실습2) 원하는 태그정보 가져오기

개발자 도구를 열어서 표시된 버튼을 누르고 마우스 커서를 옮기면 태그 정보를 보여줌

마우스를 올리면 블로그 제목마다 ‘sh_blog_title’ 클래스가 겹침

import urllib.request
from bs4 import BeautifulSoup

url = 'https://search.naver.com/search.naver?query=%ED%8C%8C%EC%9D%B4%EC%8D%AC&where=post&sm=tab_nmr&nso='

html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html,'html.parser')

title = soup.find_all(class_='sh_blog_title') #해당 클래스를 모두 찾음

print(title)

실행결과

여기서 ‘title’과 ‘href’ 태그 정보만 가져옴

for i in title:
    print(i.attrs['title']) # attrs : 속성
    print(i.attrs['href'])

실행결과

실습3) 베이스 url로 리팩토링

실습2의 문제점은 고정된 url을 사용하는 것이다.

다른 검색어로 검색할 때 매번 url을 따오지 않고 base url을 정해놓고 검색어마다 url을 바꿔줄 수 있다.

import urllib.request
from bs4 import BeautifulSoup


baseUrl = 'https://search.naver.com/search.naver?sm=tab_hty.top&where=post&query='

plusUrl = input('검색어를 입력하세요:')

url = baseUrl + plusUrl

html = urllib.request.urlopen(url).read()
soup = BeautifulSoup(html,'html.parser')

title = soup.find_all(class_='sh_blog_title')

for i in title:
    print(i.attrs['title'])
    print(i.attrs['href'])

baseUrl를 정하고 plusUrl에 ‘파이썬’을 입력하고 Enter를 누르면…

ascii 머시기 하면서 에러가 나옵니다.

‘파이썬’ 한글 검색어가 자동으로 변환되지 않아서 문제가 발생한건데

밑에 처럼 변경하면 잘 돌아갑니다.

import urllib.parse

url = baseUrl + urllib.parse.quote_plus(plusUrl)

Categories:

Updated:

Comments