웹 스크래핑
colab사용시 라이브러리 설치 명령어 앞에 "!"를 붙인다.
예를 들면,
!pip install bs4 requests
라이브러리 requests로 요청하고 가져온다 , bs4로 추출해서 분석하기 좋게 만듦!
예시,
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from datetime import datetime
스크래핑과 엑셀사용에 필요한 라이브러리 가져오고
def get_news(keyword):
함수 사용으로 여러 개를 가져올 수 있게 하고
wb= Workbook() (새로운 엑셀파일을 만들거나, 기존의 엑셀파일을 사용할때 쓰는 코드)(지금은 파일을 지정안했으니 새로 만드는거)
sheet = wb.active
새로운 엑셀 파일을 만들거나, 기존의 엑셀파일을 사용할 때 쓰는 코드, 지금은 파일지정을 안 했으니 새로 만드는 거~
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'}
user agent는 HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 소프트웨어의 식별 정보를 담고 있는 request header의 한 종류,
임의로 수정될 수 없는 값이고, 보통 HTTP 요청 에러가 발생했을 때 요청을 보낸 사용자 환경을 알아보기 위해 사용함,
기본형태는,
{User-Agent: <product> / <product-version> <comment>}
위에 사용한 거랑 비교해서 보면 이해됨
{'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')
원하는 항목. select로 리스트형태로 저장
for li in lis:
for문으로 반복해서 가져오기
a = li.select_one('a.news_tit')
. select는 리스트 형태의 결괏값이 저장되고,
. select_one은문서의 처음부터 찾게 되며 가장 첫 <a> 태그를 호출 (전체 웹페이지에서 CSS Selector에 매칭되는 가장 첫 번째 객체를 가져옴)
링크 텍스트와 주소만 필요하다면 select_one으로
row = [a.text, a['href']]
select_one을 사용할 경우
문서의 처음부터 찾게 되며 가장 첫 태그를 호출한다.
select_one의 경우 바로 data.text , data ["href"]를 통해 속성 값을 얻을 수 있다.
속성값을 row로
sheet.append(row)
(row)를 엑셀시트에 추가
today = datetime.today().strftime("%Y-%m-%d")
오늘 날짜
wb.save(f"news/{today}_{keyword}.xlsx")
workbook 객체를 실제 파일로 저장하기 위해. save함수 사용, 저장할 위치를 정해줄 때 경로입력함
wb.close()
이것 외에도 주식데이터를 가져와봤다.
숙제였지만.... 이미지도 가져올 수 있단 걸 경험했다.
라이브러리만 잘 사용하면 생각보다 많은 일을 할 수 있을 거 같은 기대가 되네...
다기억할 필요는 없다고, 검색으로 찾아 복붙 하면 된다는데..... 더 알아야 이해가 될 것 같은데..... 좀 알아야 가져와서 쓸 수 있지 않나....
그냥 1주 차니깐 믿고 해 보자~
'교육 후기 > 스파르타코딩클럽_개발일지' 카테고리의 다른 글
주식 데이터를 활용한 파이썬 데이터 분석_3주차 개발일지 (0) | 2023.09.20 |
---|---|
주식 데이터를 활용한 파이썬 데이터 분석_2주차 개발일지 (0) | 2023.09.10 |
마케터, 기획자를 위한 실전 데이터 분석_2주차 개발일지 (0) | 2023.09.10 |
마케터, 기획자를 위한 실전 데이터 분석_1주차 개발일지 (0) | 2023.09.03 |
댓글