본문 바로가기
코딩 연습/코딩배우기

파이썬 웹 크롤링(Web Crawling) 알아보기 #7

by good4me 2020. 10. 25.

goodthings4me.tistory.com

 

■ 파이썬 크롤링 실습 - iframe 사이트 크롤링해보기

페이지 소스 보기로 내용이 안보일 경우, 자바스크립트 또는 iframe일 가능성 있음

http://goodmonitoring.com/monitor_board/ 사이트의 경우, ifrmae 형식임
개발자도구(F12)로 소스코드 확인 결과,

<iframe src="http://goodmonitoring.com/xe/moi" id="moi" width="100%" height="0px" 
marginwidth="0px" marginheight="0px" frameborder="no" scrolling="yes" align="center" 
onload="resizeFrame(this)" style="height: 1218px;"></iframe>

src 부분(http://goodmonitoring.com/xe/moi)을 새 탭에서 열고, F12로 보면 게시판 리스트가 보이며,
페이징 처리가 되는 구조라서 하단 페이지네이션 부분을 클릭해본 후 페이징 처리 구조 확인함
http://goodmonitoring.com/xe/index.php?mid=moi&page=2
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin

board_url = 'http://goodmonitoring.com/xe/index.php'
params = {
    'mid': 'moi',
    'page': 1,
}

html = requests.get(board_url, params = params)
print(html)
soup = BeautifulSoup(html.text, 'html.parser')
#print(soup.text)

rows = []  # 게시글 목록을 담을 list
for tr_tag in soup.select('.bd_lst_wrp > table tbody tr'):
    cols = []  # 한 개의 tr_tag 내역을 담을 list
    for td_tag in tr_tag.select('td'):
        cols.append(td_tag.text.strip())
    rows.append(cols)
    
    a_tag = tr_tag.find('a')
    board_date = tr_tag.find(class_ = 'time').text
    print(a_tag.text.strip(), board_date, a_tag['href'])
    
    # 링크 url을 온전하게 합치기 urljoin() 
    link_url = urljoin(board_url, a_tag['href'])
    print(link_url)
    
    print()
    
    

[실행 결과]

<Response [200]>
[라커디움] KOVOMARKET 서포터즈 1기 모집 (~ 10.28) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333897
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333897

[고양시관광컨벤션협의회] 제2회 고양시 관광 팸투어 모집 (~ 11.1) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333850
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333850

[부천시] 고령친화도시 조성 모니터링단 3기 모집 (~ 11.6) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333827
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333827

[조인누리웰] 조인 주부패널 5기 모집 (~ 10.31) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333803
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333803

[고래사어묵] 고래사 체험단 모집 (~ 11.5) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333957
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333957

[I-COME UP 2020 인천창업벤처한마당] 인스타즈 모집 (~ 10.28) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333945
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333945

[애드플래닛커뮤니케이션] '브랜드 저널리즘' 마케팅 서포터즈 2기 모집 (~ 10.28) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333933
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333933

[고양시 유튜브 채널 일산맛집] 서포터즈 1기 모집 (~ 10.29) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333921
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333921

[에버콜라겐] 공식 서포터즈 11기 모집 (~ 10.25) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333909
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333909

[한국학중앙연구원] SNS 기자단 1기 모집 (11.2~11.16) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333885
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333885

[믹순] 믹순이 1기 모집 (~ 11.3) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333873
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333873

[쉐어러스] 교보북살롱 직무체험단 4기 모집 (~ 10.27) 2020.10.23 /xe/index.php?mid=moi&page=1&document_srl=333815
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333815

[살림백서] 살림키퍼 15기 모집 (~ 10.27) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333791
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333791

[리닥] 라이프닥터 1기 모집 (~ 11.5) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333766
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333766

[베어스타운] 어텀 바베큐 올인클루시브 패키지 체험단 모집 (~ 10.30) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333753
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333753

[쁘띠엘린] 밀로앤개비 멀티 범퍼침대 에디터 모집 (~ 10.27) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333741
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333741

[주식회사 아들과딸] 공룡팝업북 서평단 모집 (~ 10.25) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333729
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333729

[지학사] 중학 비문학 독해 연습 인문편 서포터즈 모집 (~ 11.1) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333706
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333706

[경기도자원봉사센터] 배달특급 청년 서포터즈 청년특급 1기 모집 (~ 11.3) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333694
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333694

[제14회 여성인권영화제] 피움뷰어 모집 (~ 10.28) 2020.10.22 /xe/index.php?mid=moi&page=1&document_srl=333682
http://goodmonitoring.com/xe/index.php?mid=moi&page=1&document_srl=333682



# 리스트 내용 출력해보기
for n in rows:
    print(n)

'''
['공지', '대학생모니터', '[라커디움] KOVOMARKET 서포터즈 1기 모집 (~ 10.28)', 'hera', '2020.10.23', '13']
['공지', '일반모니터', '[고양시관광컨벤션협의회] 제2회 고양시 관광 팸투어 모집 (~ 11.1)', 'hera', '2020.10.23', '12']
['공지', '일반모니터', '[부천시] 고령친화도시 조성 모니터링단 3기 모집 (~ 11.6)', 'hera', '2020.10.23', '13']
['공지', '주부모니터', '[조인누리웰] 조인 주부패널 5기 모집 (~ 10.31)', 'hera', '2020.10.23', '24']
['17585', '일반모니터', '[고래사어묵] 고래사 체험단 모집 (~ 11.5)', 'hera', '2020.10.23', '32']
['17584', '일반모니터', '[I-COME UP 2020 인천창업벤처한마당] 인스타즈 모집 (~ 10.28)', 'hera', '2020.10.23', '8']
['17583', '대학생모니터', "[애드플래닛커뮤니케이션] '브랜드 저널리즘' 마케팅 서포터즈 2기 모집 (~ 10.28)", 'hera', '2020.10.23', '10']
['17582', '일반모니터', '[고양시 유튜브 채널 일산맛집] 서포터즈 1기 모집 (~ 10.29)', 'hera', '2020.10.23', '6']
['17581', '일반모니터', '[에버콜라겐] 공식 서포터즈 11기 모집 (~ 10.25)', 'hera', '2020.10.23', '14']
['17580', '대학생모니터', '[한국학중앙연구원] SNS 기자단 1기 모집 (11.2~11.16)', 'hera', '2020.10.23', '10']
['17579', '일반모니터', '[믹순] 믹순이 1기 모집 (~ 11.3)', 'hera', '2020.10.23', '28']
['17578', '대학생모니터', '[쉐어러스] 교보북살롱 직무체험단 4기 모집 (~ 10.27)', 'hera', '2020.10.23', '12']
['17577', '일반모니터', '[살림백서] 살림키퍼 15기 모집 (~ 10.27)', 'hera', '2020.10.22', '29']
['17576', '대학생모니터', '[리닥] 라이프닥터 1기 모집 (~ 11.5)', 'hera', '2020.10.22', '22']
['17575', '일반모니터', '[베어스타운] 어텀 바베큐 올인클루시브 패키지 체험단 모집 (~ 10.30)', 'hera', '2020.10.22', '30']
['17574', '일반모니터', '[쁘띠엘린] 밀로앤개비 멀티 범퍼침대 에디터 모집 (~ 10.27)', 'hera', '2020.10.22', '15']
['17573', '일반모니터', '[주식회사 아들과딸] 공룡팝업북 서평단 모집 (~ 10.25)', 'hera', '2020.10.22', '9']
['17572', '일반모니터', '[지학사] 중학 비문학 독해 연습 인문편 서포터즈 모집 (~ 11.1)', 'hera', '2020.10.22', '9']
['17571', '대학생모니터', '[경기도자원봉사센터] 배달특급 청년 서포터즈 청년특급 1기 모집 (~ 11.3)', 'hera', '2020.10.22', '19']
['17570', '일반모니터', '[제14회 여성인권영화제] 피움뷰어 모집 (~ 10.28)', 'hera', '2020.10.22', '23']
'''

good4me.co.kr

 

[참고] askcompany.kr - 크롤링 차근차근 시작하기

 

 

댓글