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는 코딩으로 마우스, 키보드를 조작하여 매크로나 자동클릭화 등 단순 반복작업의 자동화를 구현할 수 있도록 메소드들을 제공하는 모듈 중 하나이다.
이 예제는 크롤링, 파이썬 문법의 입문용으로 이 라이브러리의 부가적인 기능을 이용했다.
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}")
'개발 이모저모' 카테고리의 다른 글
코드 품질 (0) | 2023.06.20 |
---|---|
pyautogui, for문을 이용해 원하는 페이지만큼 크롤링 하기 - 뉴스기사 가져오기 예제 2️⃣ (0) | 2022.12.08 |
Beautifulsoup이란 (0) | 2022.12.06 |
python requests 라이브러리 (0) | 2022.11.15 |
VSCODE Python 실행하기 (2) | 2022.11.14 |