[크롤링] iframe, 태그 삭제

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

댓글