iframe
네이버 메인 페이지의 부분 중 쇼핑 부분의 태그는 다른 태그와는 차이점이 있다
앞서 개시한 기록 중 네이버 페이지 특정 글자 가져오기 예제의 방법으로 수집이 불가능 하나다.
해당 영역이 하나의 페이지처럼 동작(iframe : 웹페이지 내부의 웹페이지)하고 있기 때문이다
해당 태그의 src를 복사 후, url 을 수정 후 수집 할 필요가 있다
1 2 3 4 5 6 7 | import requests as req from bs4 import BeautifulSoup as bs #iframe 의 태그의 src 속성과 네이버의 url 을 이용하여 수집 url = 'https://www.naver.com/shoppingbox/shoppingboxnew/main.nhn?mode=plusdeal&domain=N' res = req.get(url) soup = bs(res.text, 'lxml') soup.select('a.ls_link') | cs |
태그 삭제
크롤링으로 수집하는 데이터 중, 태그 바깥에 존재하는 텍스트 데이터가 존재 할 수도 있다.
(img 태그 뒤에 들어오는 텍스트나 닫는 태그가 없는 태그의 경우 등)
이 경우, 상위 태그의 값을 받아와 전처리 하거나 삭제하는 방법이 있다.
BeautifulSoup 함수로 추출한 태그.extract()
- 해당 태그를 제거하는 함수
예제) 현재 온도 추출
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import requests as req from bs4 import BeautifulSoup as bs #웹 페이지 요청 받아오기 url = 'https://search.naver.com/search.naver?where=nexearch&sm=top_sug.asiw&fbm=1&acr=1&acq=%EA%B4%91%EC%A3%BC&qdt=0&ie=utf8&query=%EA%B4%91%EC%A3%BC+%EB%82%A0%EC%94%A8' res = req.get(url) soup = bs(res.text,'lxml') #삭제할 span 태그들을 span = soup.select('div.temperature_text>strong>span') #내부의 span 태그 제거 for i in span: i.extract() #출력-index:0 은 현재 온도 print(soup.select('div.temperature_text>strong')[0].text) | cs |
댓글
댓글 쓰기