2022. 12. 15. 14:57ㆍ자격증(다다익선)/파이썬
https://chanytv.tistory.com/137
[파이썬] 스크래핑(크롤링) 실습
웹스크래핑 전 HTML 이해하기
이 전에는 스크래핑은 엑셀이나 구글 스프레드시트 등에서 많이 해봤던 터라 그렇게 어렵지 않았다.
스크래핑 환경구성 - 명령어(?) 설치하기 -
엑셀에서도 그렇고 스크래핑을 하기 전에 환경 구성은 필수다. Colab에서도 마찬가지였다.
pip install bs4 requests
명령어 이해
bs4 = beautifulsoup4 / 잘은 모르겠으나 파이썬으로 HTML 코드를 긁어오는 명령어인 듯.
requests = HTTP에 요청을 보내는 명령어인 듯.
기본적으로 두 개면 되는 듯 하다.
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query=삼성전자',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
requests를 가져와라
bs4부터 beautifulsoup를 불러와라
headers와 data는 저렇게 구성이 되어 있는 것이라 저렇게 써야 할 듯하다.
data만 보면 입력한 주소에서 값을 불러와라. 여기까지가 HTML을 불러오는 작업 같다.
a = soup.select_one('#sp_nws1 > div.news_wrap.api_ani_send > div > a')
a['href']
a.text
태그를 불러오는 명령어는 select다. 한 개만 불러온다면 뒤에 '_one'만 붙이면 된다.
해당 태그에서 a['href']는 주소를 불러오고 a.text는 태그 안에 문자를 불러오게 된다.
반복된 태그에서 값을 가져오려면 당연히 list와 for문을 응용하면 된 것이다.
lis = soup.select('#main_pack > section > div > div.group_news > ul > li')
for li in lis:
a = li.select_one('a.news_tit')
print(a.text, a['href'])
이제 다른 키워드를 검색하여 결과값을 얻는 방법이다.
주소는 아래와 같다.
https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query=삼성전자
여기서 hty&query의 값만 바꿔주면 다른 해당 키워드의 결과를 불러올 수 있다.
def get_news(keyword):
headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get(f'https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query={keyword}',headers=headers)
soup = BeautifulSoup(data.text, 'html.parser')
lis = soup.select('#main_pack > section > div > div.group_news > ul > li')
for li in lis:
a = li.select_one('a.news_tit')
print(a.text, a['href'])
get_news('피파온라인4')
함수를 활용하여 keyword를 만들었다. 여기서 주의해야 할게 키워드가 들어가는 주소 앞에 'f'가 들어간다는 점이다.
함수가 적용되는 위치를 지정해주는 건가? 뭐 아무튼 이것도 그냥 저렇게 외어야 할 듯하다.
키워드 함수 적용이 다 끝났다면 get_news('검색하고자 하는 키워드')를 입력하면 값이 출력되는 것을 확인할 수 있다.
'자격증(다다익선) > 파이썬' 카테고리의 다른 글
[파이썬] Open API (0) | 2022.12.28 |
---|---|
[파이썬] yfinance을 이용한 해외 주식 정보 분석 (0) | 2022.12.24 |
[파이썬] Pandas와 DataFrame (1) | 2022.12.23 |
[파이썬] openpyxl / 파일 업로드, 다운로드 (0) | 2022.12.16 |
[파이썬] 변수&기본연산 / 리스트,딕셔너리 / 함수 / 조건문 / 반복문 (0) | 2022.12.15 |