본문 바로가기

Programming/python

Python Crawling 기초. 1. Beautifulsoup을 이용해 링크 찾아내기

Python 이라는 언어가 가장 사람들의 관심을 많이 끌고 있는 이유 중 하나가 아무래도 크롤링. 

그리고 그 크롤링이 다른 언어들에도 있지만, 굳이 파이썬으로 하는 이유는 굉장히 쉽고 간단하게 원하는 정보들을 추출할 수 있기 때문이랄까. 

 

이번엔 쉬어갈 겸 Crawling 에 대해 간단히 돌려볼까 한다. 

 

설치가 안되어 있다면, 

아래 참조.

windows python vsCode로 실행하기

 

 

windows python vsCode로 실행하기

잠결에 설치했던 python 뭔가 잘못되어서 지우고 다시 해보려고 할 때마다 망해버렸다. 그래서 실은 오늘 다시 설치. (맥북에 설치한건 왜 잘되고 있는거냐고..) windows10 python 설치 python windows에 설치하기..

jaehyunshin.tistory.com

 

설치가 완료되었다면, 

 

beautifulsoup 모듈을 설치해준다. 

 

먼저 vscode를 실행하고, terminal에서 beautifulsoup 설치 명령어를 넣어준다. 

가끔 beautifulsoup을 설치하려는데 웬 엉뚱한걸 설치할까 싶어하는 분들이 있는데, 

pip3 install bs4

 

처음 import 할때 구문을 

from bs4 import BeautifulSoup

이라고 하니, 쉽게 넣어준다. 

 

#!/usr/bin/env python3
# Anchor extraction from HTML document
from bs4 import BeautifulSoup
from urllib.request import urlopen

with urlopen('https://en.wikipedia.org/wiki/Main_Page') as response:
    soup = BeautifulSoup(response, 'html.parser')
    for anchor in soup.find_all('a'):
        print(anchor.get('href', '/'))

Python Crawling 관련한 책에서 많이 하는 것과 같이, 우리는 wikipedia 영문페이지에 담겨있는 'a' tag만 추출했다. 

 

urllib의 urlopen을 이용해 특정사이트를 'response'라는 이름으로 연다. 

BeautifulSoup에서 열린 response 내에 담긴 사이트의 html코드를 분석해 soup에 담고, 

soup에 담긴 'a' 태그가 달린 모든 것들을 anchor를 돌려가면서 href (a tag가 붙어있는 주소가 나올거다) 만 '/' 줄을 바꿔가면서 출력하도록 한다. 

 

참고문서

https://www.crummy.com/software/BeautifulSoup/bs4/doc.ko/

 

뷰티플수프 문서 — 뷰티플수프 4.0.0 문서

find_all() 메쏘드는 태그의 후손들을 찾아서 지정한 여과기에 부합하면 모두 추출한다. 몇 가지 여과기에서 예제들을 제시했지만, 여기에 몇 가지 더 보여주겠다: 어떤 것은 익숙하지만, 다른 것들은 새로울 것이다. text 혹은 id에 값을 건넨다는 것이 무슨 뜻인가? 왜 다음 find_all("p", "title")은 CSS 클래스가 “title”인

태그를 찾는가? find_all()에 건넨 인자들을 살펴보자. CSS 클래스로 탐색하기 특정

www.crummy.com