Appia의 IT세상

[파이썬 크롤링] Beautiful Soup에서 #document 부분에 대해서 크롤링 하는 방법 본문

Python/Python Crawler[크롤러]

[파이썬 크롤링] Beautiful Soup에서 #document 부분에 대해서 크롤링 하는 방법

Appia 2021. 10. 6. 06:16
반응형

[파이썬 크롤링] Beautiful Soup에서 #document 부분에 대해서 크롤링 하는 방법

[파이썬 크롤링] Beautiful Soup에서 #document 부분에 대해서 크롤링 하는 방법

최근 제가 겪은 일을 해결하는 과정에 대해서 이야기를 해보고자 합니다. 먼저, 저의 경우 네이버 금융의 환율 테이블을 추출하고자 하였습니다. 하지만, CSS selector나 다양한 방법으로 크롤링 해볼려고 하였으나, 관련해서 크롤링 할 수가 없었습니다. 그래서 자세히 봐보니, 화면에 파싱 못하는 부분이 "#document"부분이 포함된 부분이었습니다. 

네이버 금융 환율 개발자 모드 화면 

하지만, 이 부분을 자세히 보니, <iframe>태그 안에 존재하는 것이었습니다. 이 부분을 보다 자세하게 살펴보니, "src"라는 속성을 볼 수 있었습니다. 

네이버 금융 환율 개발자 모드 화면 - iframe 부분 확인 

그래서 이 부분을 바탕으로 다른 부분과 연결되어 있는 것은 아닐까라는 생각을 하게 되었습니다. 그래서 src 부분에서 실제 연결되어 있는 부분이 어디인지에 대해서 생각을 하였습니다. 그래서 마우스를 위에 놓고 오른쪽 버튼을 클릭하였습니다. 그래서 이 부분에서 [Open in the new tab]부분을 클릭하였습니다. 

네이버 금융 환율 개발자 모드 화면 - src에서의 추가 메뉴 화면 

그랬더니 약간의 다른 페이지가 하나 나타났습니다. 바로 테이블만 존재하는 부분이 나타난 것입니다. 

네이버 금융 환율 개발자 모드 화면 - src 관련 페이지 이동 

그래서 이런 생각을 해봤습니다. iframe 부분을 실제 외부에 다른 부분에서 참조하여 출력하는 것은 아닐까라는 생각을 했습니다. 여러군데에서도 관련된 부분을 검토해보니, 실제로 다른 페이지를 연결하여 출력해주는 것이었습니다. 따라서 위의 참조되는 페이지를 크롤링해야합니다. 따라서 이 부분을 바탕으로 다음과 같이 코드를 작성해봤습니다. 

def return_value(address, addition):
    res = requests.get(address +addition)
    soup = BeautifulSoup(res.content, 'html.parser')
    
    frame = soup.find('iframe', id="frame_ex1")
    frameaddr = address+frame['src']

    res1 = requests.get(frameaddr)
    frame_soup = BeautifulSoup(res1.content, 'html.parser')
    items = frame_soup.select('body > div > table > tbody > tr')

위에서 보이는 바와 같이 address는 기본 주소입니다. 여기에 위의 속성이 가지고 있는 src의 속성의 복사하여 크롤링해야만, 관련된 부분을 추출할 수 있습니다. 

[윈도우10 Windows10]크롬(Chrome)에서 개발자 도구 실행하기

 

[윈도우10 Windows10]크롬(Chrome)에서 개발자 도구 실행하기

[윈도우10 Windows10]크롬(Chrome)에서 개발자 도구 실행하기 이전에 포스팅에서는 크롬(Chrome)에서 웹사이트 HTML을 확인하는 방법에 대해서 살펴봤습니다. 하지만, 이와 달리 웹개발자들이 실제로

appia.tistory.com

이번 포스팅에서는 [파이썬 크롤링] Beautiful Soup에서 #document 부분에 대해서 크롤링 하는 방법라는 주제로 포스팅을 해봤습니다. 다음 포스팅을 실제 이 부분을 활용하여, 크롤링 한 부분을 출력하는 부분에 대해서 포스팅을 해볼 예정입니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments