안녕하세요 좋은 강의 잘 듣고 있습니다.
네이버 금융에서 삼성전자의 일별 시세 데이터를 크롤링해보다가 아래와 같이 문의드립니다.
soup.select("table.type2") 관련 문의
강의 내용대로 따라했는데, len(soup.select("table.type2"))가 1이 아니라 3이 나옵니다.
그리고 soup.select("table.type2 tbody > tbody > tr")을 해보니
iframe의 코드를 읽지 못하고 본문 페이지의 내용만을 읽어온 것 같습니다.
res.text를 실행해서 아웃풋을 꼼꼼히 읽어보니 역시 iframe의 자식 구조들은 읽지 못하더라구요.
(아래는 발췌한 내용)
<iframe name=\'day\' src=\'/item/sise_day.naver?code=005930\' width="100%" height=360 marginheight=0 bottommargin=0 topmargin=0 SCROLLING=no frameborder=0 title="일별 시세"></iframe>
강의에서는 오히려 반대로 reqeusts.get()을 사용하면 iframe의 Network Resource 부분을 res로 받아오던데
저는 본문의 html을 받아오는 이유가 있을까요?
제가 작성한 코드는 아래와 같습니다.
my_headers = { "referer" : "https://finance.naver.com/item/sise_day.naver?code=005930&page=1", "upgrade-insecure-requests" : "1", "user-agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36" }
res = requests.get(
url = "https://finance.naver.com/item/sise.naver?code=005930",
headers = my_headers
)
soup = bs4.BeautifulSoup(res.text)
res.text
질문 안에 답이 있었네요..ㅎㅎ
참조할 URL이 잘못되어있으니 잘못 긁어 올 수 밖에 없었겠군요.
명쾌한 답변 및 좋은 강의 감사합니다.