본문 바로가기

개발 이모저모

pyautogui , fstring을 이용한 크롤링 - 뉴스기사 가져오기 예제 1️⃣

import requests
from bs4 import BeautifulSoup
import pyautogui


#프롬프트창으로 입력받기
searchParam = pyautogui.prompt("검색어를 입력하세요 >>> ")

#string 합치는 방법1
#requestUrl = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query="+searchParam

#fstring으로 합치는방법2
response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={searchParam}")
html = response.text
soup = BeautifulSoup(html, 'html.parser')

links = soup.select('.news_tit')
for link in links : 
    title = link.text #태그안에 텍스트요소를 가져온다
    url = link.attrs['href']# href의 속성값을 가져온다
    print(title)
    print(url)
    print("")

 

위의 소스를 실행해보면 프롬프트창이 뜨면서 검색어를 입력받을 수 있다.

 

이강인 이라는 키워드를 입력하면, 네이버 뉴스에서 이강인 이라는 기사를 검색한다.
입력한 키워드에 해당하는 뉴스 기사의 제목과 url 링크를 출력하게 되는 예제이다.

 


여기서 확인해볼 것은 다음과 같다!!
  - pyautogui
  - fstring


pyautogui

1. 설치
pip install pyautogui

 

pyautogui는 코딩으로 마우스, 키보드를 조작하여 매크로나 자동클릭화 등 단순 반복작업의 자동화를 구현할 수 있도록 메소드들을 제공하는 모듈 중 하나이다.

이 예제는 크롤링, 파이썬 문법의 입문용으로 이 라이브러리의 부가적인 기능을 이용했다.

searchKeyword = pyautogui.prompt("검색어를 입력하세요 >>>")
 
 

pyautogui의 메세지 박스 기능을 이용한 것이다. 메세지 박스 기능은 4가지가 있고, 예제에서는 prompt()를 사용했다.
   - alert()
   - confirm()
   - prompt()
   - password()


fstring

fstring은 문자열 포맷팅 하는 방법 중 하나이다.
%  ,{}  ,f-string 이렇게 3가지 방법이 있는데 예제에서는 fstring을 이용했다.

 

%는 %s(문자열) , %d(정수), %f(실수)로 변수 타입에 따라 구분해서 사용해야한다.
예시 :  print('%s는 %d개 존재하고,  길이는 %f%s 입니다.' % (desk, desk_number, desk_heigh, cm))

 

{}는 변수타입 상관 없이 사용할 수 있다. 문자,정수,실수 모두 {}을 통해 데이터를 받아 사용할 수 있다.
예시 :  print('{} {}개 존재하고,  길이는 {} {} 입니다.'  (desk, desk_number, desk_heigh, cm))

 

fstring은 앞의 방법들과 비슷하지만 직관적으로 표현되어 어떤 값들이 오는지 바로 알 수 있어 가독성이 좋다.
예시 : print( f '{desk} {desk_num}개 존재하고,  길이는 {desk_heigh} {cm} 입니다.' )

 

위의 실제 예제에서도 api 호출을 할 때 query string을 +를 통해 사용할 수 있지만, fstring으로 string을 합치는 방법을 사용했다.
response = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={searchParam}")