이 블로그의 기본 목표인 ‘누구나 쉽게 코딩을 했으면 좋겠다.’의 의미는 ‘누구나 필요한 쓸만한 것을 쉽게 만든다.‘의 의미를 가지고 있습니다. 그러나 모든 사람들은 각자 목적이 다르기 때문에 공통적인 것을 이야기 할수는 없습니다. 그러다 보니 보편적인 것을 목표로 해야되 뉴스(BBC)를 대상으로 먼저 작업을 해보겠습니다.

그래서 처음에는 사람들이 가장 많이 생각하는 News를 requests로(Python Document)수집해 보겠습니다. 일단 수집을 해야 요약을 하거나 활용을 할 수 있겠죠? 나중에 요약도 해보고 활용도 해보겠습니다.

우선 웹사이트”https://www.bbc.com”를 오픈해 마우스 오른쪽 버튼을 클릭해 “검사”를 선택하면 아래와 같은 화면이 나오고 데이터의 위치를 확인 할 수 있습니다.

‘Copy selector’를 선택하면 Clipboard(Ctrl+C or Control+C)에 저장됩니다. Ctrl+V or Control+V 를 하면 아래와 같은 내용이 나옵니다.

“main-content > article > section:nth-child(1) > div > div.sc-e70150c3-0.fbvxoY > div.sc-93223220-0.bOZIBp > div:nth-child(3) > div > div > div > a > div > div.sc-6781995d-5.dWflPh > div.sc-8ea7699c-1.hxRodh > div > h2”

이 내용은 Html의 구조이고 Main tag만 남기고 삭제하시면 class에 대한 변화에 대응 할 수 있습니다.

“div > div > div > a > div > div > div > div > h2”

이 문장을 이용해 아래 코드를 만들면 동작이 가능합니다. 다만 이 html 구조는 사이트 대상자가 계속 변경이 가능함으로 필요하실때마다 추출해 사용하시면 됩니다.

BBC web crawling Code

import requests
from bs4 import BeautifulSoup as HtmlParser

if '__main__' == __name__:
    my_header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) '
                              'AppleWebKit/537.36 (KHTML, like Gecko) '
                              'Chrome/125.0.0.0 Safari/537.36'}
    response = requests.get('https://www.bbc.com/',headers = my_header)
    soup = HtmlParser(response.text, "html.parser" )
    html = soup.select_one('div > div > div > a > div > div > div > div > h2')  #See image below
    print(html.text)

이렇게 실행을 하면 원하는 텍스트를 추출 할수 있습니다. 나중에는 링크를 이용하여 내용까지 추출 할 수 있으나 일단 지금은 타이틀만 추출해보겠습니다. (타이틀만 추출해 데이터를 보니 좀 과장된 내용이 많이 있네요. 그래서 내용도 좀 볼 필요가 있어 졌습니다.)

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다