네이버 검색결과 만들기를 아직 보지 않으셨다면, 먼저 보고 오세요.
이어지는 내용입니다.
2020/03/12 - [분류 전체보기] - 파이썬 크롤링 따라하기 - 네이버 검색결과(feat. BeautifulSoup)
이전 크롤링에서는 네이버 검색결과를 자동으로 출력했는데요.
다 좋은데 한 가지 아쉬운 점이 있어요.
바로 검색어를 매번 입력해줘야 한다는 점이에요.
검색어를 매번 바꿔서 입력할 수 있다면 편리하지 않을까요?
이 시간에는 검색어를 입력받고, 입력된 검색어를 결과로 출력해볼꺼에요.
파이썬을 검색한 결과 URL이에요.
https://search.naver.com/search.naver?where=post&sm=tab_jum&query=%ED%8C%8C%EC%9D%B4%EC%8D%AC
apple를 검색한 결과에요.
https://search.naver.com/search.naver?where=post&sm=tab_jum&query=apple
두 결과의 공통된 부분이 있죠?
https://search.naver.com/search.naver?where=post&sm=tab_jum&query=
바로 이 부분인데요, "query=" 이후에 나오는 것이 검색어입니다.
우리는 검색어를 입력받기로 했기 때문에 이렇게 수정해볼꺼에요.
baseUrl은 공통된 부분을 입력해줍니다.
plusUrl은 검색어 부분을 입력받습니다.
이 두 가지를 합치면 url이 완성됩니다.
baseUrl = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query='
plusUrl = input('검색어를 입력해주세요 :')
url = baseUrl + plusUrl
하지만,
검색어가 한글일 경우 인코딩 문제로 제대로 검색되지 않습니다.
이 문제를 해결하기 위해
urllib.parser 함수를 불러올꺼에요.
그리고 plusUrl 불러올때, urllib.parse.quote_plus() 사용합니다.
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
baseUrl = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query='
plusUrl = input('검색어를 입력해주세요 :')
url = baseUrl + urllib.parse.quote_plus(plusUrl)
자 정상적으로 데이터를 불러옵니다.
전체코드 올려드려요.
import urllib.request
import urllib.parse
from bs4 import BeautifulSoup
baseUrl = 'https://search.naver.com/search.naver?where=post&sm=tab_jum&query='
plusUrl = input('검색어를 입력해주세요 :')
url = baseUrl + urllib.parse.quote_plus(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'])
print()
검색어를 직접 변경하여 원하는 결과를 뽑을 수 있으니
너무 편리한 것 같아요.
반복 통해 스킬업 해야겠어요!
아자아자!
최근댓글