summ의 블로그

웹 크롤링 (2) 본문

파이썬

웹 크롤링 (2)

summ._ 2024. 9. 21. 20:08

240920 

 

동적 페이지

 

동적 : 말 그대로 웹 페이지 내에서 무엇을 클릭하거나, 반응해도 url이 바뀌지 않고 페이지 내에서 결과가 변하는 것이다. 

"반응형" 

 

웹크롤링 데이터 수집 절차

 

1. dev tool (f12)를 이용하여 웹 데이터 url 받기

 

2. url 이용하여 request --> response json /html 형식으로 데이터 받아오기

>> response 200번대 == success 

 

3. 데이터 파싱: 웹 서버에서 받은 데이터를 원하는 형식으로 형태를 변경해서 사용 (이후 전처리 과정)

 >> json 형식을 list, dict --> df

 

이후 데이터 시각화 /  데이터 상관관계 분석 (데이터 스케일링)

 

* data scaling : feature 특성 맞춰주기 

 

- 표준화 standard : 평균 0 분산 1로 맞춰주기 (분포가 다양)

- 정규화 normalization / minmax scaler: 0~1 사이 (이상치 제거 필수/ minmax--> 회귀적합)

- 로버스트: 중앙값 0 iqr = 1 (이상치 영향 ↓)

 

큰 이상치를 가지면 표준화 / 반대이면 정규화 

 

국내 금 시세

 

url = 'https://m.stock.naver.com/front-api/marketIndex/prices?category=metals&reutersCode=CMDT_GD&page=1'
response = requests.get(url)
data = response.json()
data = data['result']
df = pd.DataFrame(data)
data[['localTradedAt','closePrice','fluctuations']]

 

 

header 가 필요한 경우

 

위와 동일한 프로세스로 진행을 했지만, 가령 response 가 400번대인 경우가 존재한다.

서버에서 요청을 불완전하거나 의심스러운 것으로 처리하여 요청이 거부된 것이다. 

이러한 경우엔 필수로 header 를 지정해주어야 한다. 

 

header = { 'user.agent' : ' ' , 'referer' : ' ' , 'cookie': ' '} 

 

ex daum 의 exchange

 

rest api 

 

  • Representational State Transfer

api key 를 발급받아 내가 원하는 데이터를 얻는 방법이다.  

사용하는 api에 따라 필요한 params, headers 를 지정해줘야 한다. 

 

ex naver, open api, kakao

 

 

 

정적 페이지  

 

정적 페이지는 html로 데이터를 가져오기에 request response 이후에 beautifulsoup 패키지, css-selector 를 이용하여 원하는 data 를 가져온다. 

 

html 

 

정적 페이지는 웹 크롤링 시 html 로 가져오기 때문에 

html 에 대한 기본적인 이해가 필요하다. 

 

  • p : 글자 작성 <p> </p>
  • id: 스타일 고유값 id ='' # 사용
  • class: class 지정 class ='' . 사용 
  • div: 레이아웃 지정 
  • h1~6: 제목 지정 <h1> </h1>
  • span:  글자 중 특별하게 뭘 적용하고 싶을 때 사용 (css style 지정 시) 
  • a: 페이지 이동 하이퍼링크  
  • img: 이미지 추가 
  • ul li: 리스트 추가  

 

class selector 

 

글자, 문단에 스타일을 지정하고 싶을 때 

 

class , id 를 사용한다. 

 

  • not selector - :not(셀렉터)  괄호 안의 셀렉터를 제외하고 모든 요소에 스타일 적용
  • first-child selector - :first-child()  부모 요소의 첫 번째 자식 요소에만 스타일을 적용
  • last-child selector - :last-child()
  • nth-child Selector - :nth-child() 부모 요소에서 n번째 특정 순서에 있는 자식 요소를 선택

 

 

'파이썬' 카테고리의 다른 글

웹 크롤링 (3)  (0) 2024.09.23
파이썬 기초와 웹 크롤링 기초  (0) 2024.09.19
이변량분석 범주형 변수  (0) 2024.09.13
범주형 변수와 수치형 변수 분석  (0) 2024.09.13
수치형변수 이변량분석  (0) 2024.09.12