[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 정보 추출 Extracting

미음제

·

2021. 2. 4. 22:21

파이썬으로 웹 스크래퍼 만들기

 

Part 1 이론

Part 2 파이썬으로 웹 스크래퍼 만들기

Part 3 Django를 사용하기 위해 알면 좋은 것

 

파이썬으로 웹 스크래퍼 만들기는 위와 같은

3개의 Part로 나누어 진행한다.

 

이 전 글 보기

2021/02/04 - [Developer/Python] - [파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 requests 모듈 설치 / Beautiful Soup 모듈 설치


Part 2 파이썬으로 웹 스크래퍼 만들기

Extracting

 

 

Beautiful Soup 사용하기

Beautiful Soup을 import 해서 

soup이란 변수를 생성한다.

 

자세한 사용방법은

www.crummy.com/software/BeautifulSoup/bs4/doc/

 

Beautiful Soup Documentation — Beautiful Soup 4.9.0 documentation

Non-pretty printing If you just want a string, with no fancy formatting, you can call str() on a BeautifulSoup object (unicode() in Python 2), or on a Tag within it: str(soup) # ' I linked to example.com ' str(soup.a) # ' I linked to example.com ' The str(

www.crummy.com

공식 문서에서 확인할 수 있다.

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')

html_doc은 앞선 글에서 본

.text로 가져온

html 정보를 사용한다.

 

결과변수.text = html_documents

 

import requests
from bs4 import BeautifulSoup

indeed_result = requests.get(
    'https://kr.indeed.com/%EC%B7%A8%EC%97%85?q=%ED%8C%8C%EC%9D%B4%EC%8D%AC&limit=50')

indeed_soup = BeautifulSoup(indeed_result.text, 'html.parser')

indeed_soup이란 변수에

Beautiful Soup을 통해

html에서 가져온 정보를 

저장했다.

 

 

가져온 url의 정보에서

나의 코드가 페이지 번호를 찾기 위해

우선, 해당 페이지를 검사해본다.

(해당 페이지에서 우클릭-검사)

 

이렇게 페이지 번호가 매겨진

pagingation을 찾을 수 있다.

 

페이지 수를 알려주기 위해

이 pagination을 활용한다.

 

*페이지 번호 찾기

soup.find() 함수 사용

pagination = indeed_soup.find("div", {"class": "pagination"})

 

*Pages 추출하기

soup.find_all() 함수 사용

pages = pagination.find_all('a')

pagination에서 page는 모두

anchor(링크)

 

*모든 Anchor 속 span 찾기

<span>페이지 번호</span>

for page in pages:
	print(page.find("span"))

이렇게 작성하면

모든 span을 출력한다.

 

그 중 필요한 것은

page번호만 필요하다.

마지막 다음 버튼은 필요 없다.

 

다음 버튼이 출력되는 것을

없애주기 위해 다음과 같이

코드를 작성한다.

 

 

spans = []

for page in pages:
	spans.append(page.find("span")

spans = spans[:-1]

empty array를 생성하고

for문을 통해

모든 span을 array에 넣고,

for문이 끝나면

입력된 array에서

마지막 요소를 제외한 것으로

갱신해 준다.

 

*array[-] 연산

마지막에서 시작해

첫 item을 나타낸다.

즉 배열의

가장 마지막 요소를 나타낸다

 

이를 통해 마지막

요소를 제거하는 것이다.

 

그리고

print(spans)

를 하게 되면,

마지막 요소는 제거되고

출력된다.

 

 

반응형