본문 바로가기
Web-Crawling

02-Beautifulsoup을 사용해서 정적 crawling하기

by 레드아이™ 2020. 8. 25.

1. Beautifulsoup 패키지 선언

from openpyxl import load_workbook, Workbook
import pandas as pd
import re

import requests
from bs4 import BeautifulSoup as soup

 

2. 검색 페이지에서 검색어를 정의하여 검색 페이지 지정하기(한글의 경우 unicode로 변환하여 url을 불러오기 위해서 url= 다음에 f키를 입력

# 검색어 변수 정의
search_keyword='강아지'

# 빈 Naver Query 주소를 활용 + 검색어
url=f"https://search.naver.com/search.naver?sm=top_hty&fbm=0&ie=utf8&query={search_keyword}"

 

3. url내의 html 내용을 끌어오기

html=requests.get(url)
bs=soup(html.text, 'html.parser')

 

4. html내에서 특정 기사의 타이틀 부분 끌어오기

# 검색 결과에서 Title 부분 끌어오기
news_titles=bs.select('.type01 > li > dl > dt > a[title]')

.type01: 현 검색 페이지에서 type01 클래스로 지정된 부분을 선정

 

 5. 타이틀 부분에서 실제 타이틀에 해당하는 text 불러오기: for 구문을 사용해서 모든 기사의 타이틀을 끌어오기

for title in news_titles:
    T_List.append(title['title'])

이를 위해서는 코드 첫 부분에 아래와 같이 T_List를 변수로 정의

#뉴스타이틀 저장을 위한 변수 정의
T_List=list()

 

6. 마지막에 결과물을 확인하기 위해서 print 명령으로 검색 결과를 표시. 최종 전체 코드 모습

from openpyxl import load_workbook, Workbook
import pandas as pd
import re

import requests
from bs4 import BeautifulSoup as soup

#뉴스타이틀 저장을 위한 변수 정의
T_List=list()

# 검색어 변수 정의
search_keyword='강아지'

# 빈 Naver Query 주소를 활용 + 검색어
url=f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={search_keyword}"

html=requests.get(url)
bs=soup(html.text, 'html.parser')

# 검색 결과에서 Title 부분 끌어오기
news_titles=bs.select('.type01 > li > dl > dt > a[title]')

for title in news_titles:
    T_List.append(title['title'])
    
print(T_List)

댓글