[CS][Crawling]특정 검색어의 뉴스 기사 링크 및 제목 crawling 하기

건너별·2022년 2월 10일
0

web-crawling

목록 보기
4/5
post-thumbnail

요즘 핫한 '코로나'👿 검색해볼까요?

개발자 도구 웹 화면

html 추가 설명

1. <mark> 내용 </mark> : 내용 굵은 글씨로 변경
2. <a> 태그 안쪽: 제목에 대한 내용
3. href의 속성값 : 뉴스 원본 사이트 주소

우리는 뉴스 기사 링크 및 제목 crawling를 하고 싶습니다. 따라서 제목에 해당하는 태그의 별명을 찾아 CSS 선택자로 선택해야 합니다.
-> 별명 : id 또는 class

따라서 4번에 해당하는 정보인 .news_tit를 css 선택자로 선정

Ctrl + F : 선택자로 다른 문서 검색하기

Ctrl + F 를 누르고 생성되는 검색창에 특정 선택자를 입력할 경우, 해당되는 모든 곳들이 확인됨

선택자로 어떠한 데이터들을 크롤링할지 확인하였으니, 이제 본격적으로 코드를 짜 봅시다.

📌크롤링 코드

from ast import keyword
import requests
from bs4 import BeautifulSoup
import pyautogui

# keyword = input("검색어 입력 고고!>>>") #input
keyword = pyautogui.prompt("검색어 입력 고고!>>>")

resp = requests.get(f"https://search.naver.com/search.naver?where=news&sm=tab_jum&query={keyword}") # keyword를 input으로 받음
html = resp.text
# print(html)

soup = BeautifulSoup(html,"html.parser")

# 선택자에 해당하는 모든 것들을 link로 담아온다!
links = soup.select('.news_tit')

# print(links) #list 형태로 담겨져 있음

for link in links: #각 link는 <a>내용 </a> 의 html
    title = link.text # 태그 안에 텍스트요소 가져온다! -> 제목
    url = link.attrs['href'] # href=""의 속성값을 가져온다. -> 링크
    print(title, url) # 제목, 링크 크롤링 완료!


>>>
## 제목 및 링크가 성공적으로 크롤링되는 것을 확인
## '홀리차우' 검색 시
[fn마켓워치]미국식 중식당 레스토랑 홀리차우 매각 순항하나 http://www.fnnews.com/news/202004290604246177
[마켓인]미국식 중식 레스토랑 ‘홀리차우’ M&A 매물로 나왔다 http://www.edaily.co.kr/news/newspath.asp?newsid=01945046625739400
...

python 환경에서 검색어 바로 입력하는 방법🧐

  1. input() 함수 이용
  2. pyautogui 라이브러리 이용

1. code 환경에서 검색어 입력하기

  • request.get에서 입력하는 url의 query 파트를 변경하고 python의 input()함수를 활용하면 가능

2. pyautogui

  • 마우스, 키보드 매크로 라이브러리
  • 간단한 입력 창 띄우기 가능
  • input 대신 활용할 수 있음

😒부록 : Beautifulsoup는 (html, "html.parser")만 인자로 받나?

-> 노노. 마크업 언어 다 받음 ex) xml.
공식 문서를 확인하면 parser를 다른 것들을 받을 수 있음(아래 그림).


[https://www.crummy.com/software/BeautifulSoup/bs4/doc/]

마크업 언어

마크업 언어는 "마크(Mark)"로 둘러싸인 언어입니다. "태크(Tag)"로 둘러싸였다고도 표현합니다. HTML, XML 등의 마크업 언어들은 문서의 구조를 정의합니다. 쉽게 말하면 문서의 골격에 해당하는 부분을 작성하는데 사용합니다.
출처 : https://blog.cordelia273.space/15

profile
romantic ai developer

0개의 댓글