<div> python </div>
- <div id='d1' class='data no1'>data1</div>
- <p id='d2' class='data no2'>data2</p>
<div>
<p class='d'>data1</p>
<p class='d'>data2</p>
<span class='d'>data3</span>
<p class=''> <p>data4</p> </div>
</div>
.d:nth-child(2) : 아무것도 선택 안됌
.d:nth-child(3) : data3 엘리먼트 선택
import pandas as pd
import requests
from bs4 import BeautifulSoup
1. 웹페이지 분석 : 개발자 도구 : URL
- query = '삼성전자' - url = f'https://search.naver.com/search.naver?query={query}' - url2. Request(URL) > Response(Data) : Data(html)
- response = requests.get(url) - response - <Response [200]>3. html(str) > bs-object > .select(css-selector), .select_one(css-selector) > text
- dom = BeautifulSoup(response.text, 'html.parser') - type(dom) - bs4.BeautifulSoup
selector = '#nx_right_related_keywords > div > div.related_srch > ul > li' elements = dom.select(selector) len(elements) # 10
element = elements[0]
keyword = element.select_one('.tit').txt
keyword
# '삼성전자주가'
keywords = [element.select_one('.tit').text for element in elements]
keywords
pd.DataFrame({'keyword': keywords})
함수만들기
def rkeyword(query):
# 1. url
url = f'https://search.naver.com/search.naver?query={query}'
# 2. request > response : html
response = requests.get(url)
# 3. html > bs object
dom = BeautifulSoup(response.text, 'html.parser')
# 4. bs object > elements
selector = '
elements = dom.select(selector)
# 5. elements > keywords
return [element.select_one('.tit').text for element in elements
rkeyword