지금까지는 동적 웹페이지 데이터를 수집했다면....!
이번에는 정적 웹페이지 데이터를 수집한다
▽ 아직도 차이점을 모른다면 아래 글 필독
https://mingjuu.tistory.com/14
Web Crwaling ① - basic
웹 크롤링을 하기전에 알아야 할 것들 !! (1) Client & Server Client 브라우져를 통해 서버에 데이터를 요청 Server Client가 데이터를 요청하면 요청에 따라 데이터를 전송 (2) Get & Post Get Url에 데이터가 포
mingjuu.tistory.com
정적 웹페이지에서 데이터를 파싱할 때는 json(str) > list, dict > DataFrame → 이런 절차
하지만 이번 네이버 연관 검색어 수집에서는 BeautifulSoup를 이용하여 HTML 문자열 데이터를 파싱할 것이다 :)
⊙ BeautifulSoup
: HTML문서를 파이썬객체로 변환하여 원하는 정보를 가져올 때 사용하는 라이브러리
import pandas as pd
import requests
from bs4 import BeautifulSoup

네이버에 '삼성전자' 검색을 했을 때 우측 상단에서 연관 검색어를 확인 할 수 있다
이제 이 데이터를 가져올 것이다
1. 웹페이지 분석 : URL
query = '삼성전자'
url = f'https://search.naver.com/search.naver?query={query}'
url
검색어에 따라 달라질 수 있도록 query변수 지정
2. request(URL) > response : str(html)
response = requests.get(url)
response.text[:300]

response 확인해보면 html 형식이다
3. str(html) > bs object
dom = BeautifulSoup(response.text, 'html.parser')
type(dom)
4. bs object > .select(css-selector), .select_one(css-selector) > str(text)
elements = dom.select('#nx_right_related_keywords > div > div.related_srch > ul > li')
len(elements)

개발자도구 - 연관검색어 '삼성전자주가'에 cursor !

부모에서 자식요소 선택하는 기호
'>'
element = elements[0]
element.select_one('.tit').text
select_one(css선택자) : css선택자를 이용해서 하나의 요소를 접근

5. str(text) > DataFrame
keywords = [element.select_one('.tit').text for element in elements]
df = pd.DataFrame({
'keywords' : keywords
})
df['query'] = query
df

'AIVLE' 카테고리의 다른 글
| 머신 러닝 (1) | 2023.02.28 |
|---|---|
| Web Crwaling ⑥ - selenium (0) | 2023.02.21 |
| Web Crwaling ④ - Zigbang 원룸 매물 데이터 수집 (0) | 2023.02.20 |
| Web Crwaling ③ - 다음 환율 데이터 수집 (0) | 2023.02.19 |
| Web Crwaling ② - 네이버 주가 데이터 수집 (1) | 2023.02.17 |