320x100
1. 해결 전 문제
중간 for 문에서
'updown': item.select_one('.head_info > .blind').text,
이 부분이
'updown': item.select_one('.head_info.point_dn > .blind').text,
으로 되어있었다.
그럼으로 인해서 "하락"만 있을때는 작동이 되었지만, 상승과 하락이 함께 섞여있을때는
에러가 났었다.
2. 문제 해설
위의 경우에서 .head_info 다음에 나오는 blind에 해당하는게 다행히도 내가 사용을 원하는 것이여서
.head_info.point_dn > .blind
라고 사용함으로 해결할 수 있었지만
만약에 .head_info.point_dn 의 두번째, 내지는 3번째 이후에 나온다면
1) 인덱스 이용하듯이 인덱스 순차적으로 내가 원하는 것을 이용할 수 있거나
2) if 문으로써 point_dn에 해당하는 값은 "하락", point_up에 해당하는 것은 "상승"으로 처리할 수 있는 방법은 없었을까?
왜냐하면 if 문으로 분류하려고 하니깐 에러는 안나던데, 정상 작동이 안되더라. 결과값이
사진"<span class='blind'>상승</span>" 이런식으로 나와서
3. 해결 후
# 4개 데이터 수집
from bs4 import BeautifulSoup
import urllib.parse
from urllib.request import urlopen
import requests
import pandas as pd
url = 'https://finance.naver.com/marketindex/'
response = requests.get(url)
response
# requests.get(), requests.post()
response.text
soup = BeautifulSoup(response.text, 'html.parser')
exchangeList = soup.select('#exchangeList li')
exchange_datas = []
baseUrl = 'https://finance.naver.com'
for item in exchangeList:
data = {
'title': item.select_one('.h_lst').text,
'exchange': item.select_one('.value').text,
'change': item.select_one('.change').text,
'updown': item.select_one('.head_info > .blind').text,
'link':baseUrl + item.select_one('a').get('href')
}
exchange_datas.append(data)
df =pd.DataFrame(exchange_datas)
df.to_excel('./naverfinanace.xlsx', encoding='utf-8')
해결은 학원 커뮤니티에서 어떤 분이 답을 알려주셨다.. ㅠㅠ
300x250
'개발일지 > selenium, BeautifulSoup, requests' 카테고리의 다른 글
[selenium] chromedriver_autoinstaller로 크롬드라이버 버전 일치화 에러해결 (0) | 2022.06.22 |
---|---|
또다시 selenium 에러.. (0) | 2022.06.08 |
Beautifulsoup 재수강 시작 (attribute error) (0) | 2022.06.07 |
파이썬 beautifulsoup, selenium (ft. 아직 안끝났지만 이미 어이가 없다;) - 진행중 (해결 x) (0) | 2022.06.07 |
WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home 에러 (0) | 2022.06.06 |