[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 Title 추출하기
미음제
·2021. 2. 14. 22:48
파이썬으로 웹 스크래퍼 만들기
Part 1 이론
Part 2 파이썬으로 웹 스크래퍼 만들기
Part 3 Django를 사용하기 위해 알면 좋은 것
파이썬으로 웹 스크래퍼 만들기는 위와 같은
3개의 Part로 나누어 진행한다.
이 전 글 보기
2021/02/09 - [Developer/Python] - [파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 페이지 요청
Part 2 파이썬으로 웹 스크래퍼 만들기
Extract Titles
정보를 추출하기 원하는
URL을 요청하고
요청된 URL에서 html 정보를
가져온 뒤
가져온 html 정보에서
원하는 것을 추출한다.
Indeed 구인 정보에서
각각의 div의 title은
회사에서 채용하기 원하는
분야에 대한 text가 담겨 있다.
이를 추출하기 위해선
다음처럼 코드를 작성한다.
indeed.py
extract_indeed_jobs()함수 수정
jobs = []
for page in range(last_page):
result = requests.get(f"{URL}&start={page*LIMIT}")
soup = BeautifulSoup(result.text, 'html.parser')
results = soup.find_all("div", {"class": "jobsearch-SerpJobCard"})
print(results)
return jobs
클래스 명이
jobsearch-SerpJobCard
인 모든 div를 추출하는 것이다.
위 div가
회사의 채용공고의
title이 담겨있는 곳이다.
이 div를 추출하기 위해
Beautiful Soup을 사용해 추출한다.
soup.find_all()
함수를 통해서
"div"의 "class"명이
"jobsearch-SerpJobCard"인 것을
모두 찾아
results 변수에 저장한다.
그리고 print()해보면
복잡한 html 덩어리가 출력된다.
여기서 필요한 것은
위 같은 card에서
밑줄로 표시된 title이다.
이 title만 추출하기 위해서
indeed.py
extract_indeed_jobs()함수 수정
def extract_indeed_jobs(last_page):
jobs = []
# for page in range(last_page):
result = requests.get(f"{URL}&start={0*LIMIT}")
soup = BeautifulSoup(result.text, 'html.parser')
results = soup.find_all("div", {"class": "jobsearch-SerpJobCard"})
for result in results:
print(result.find("h2", {"class": "title"}))
return jobs
우선 페이지가
모든 페이지를 추출하기 보다
결과가 잘 추출되는지 확인하기 위해
첫 번째 for문을 주석 처리하고
start=0*LIMIT
으로 첫 번째 페이지만
추출해본다.
가져온 div만큼 for문을 돌리는데
"class"명이 "title"인 것을
찾아서 출력하도록 한다.
(페이지 검사를 해보면
title은 div가 아니라
h2이다)
이렇게 출력된
title을
title이라는 변수에 저장하고
title에서 anchor를 찾아보고
출력하도록 수정한다.
(title에 링크가 있는 경우가 있고
없는 경우가 있다)
for result in results:
print(result.find("h2", {"class": "title"}))
title = result.find("h2", {"class": "title"})
print(title.find("a").string)
return jobs
anchor를 찾아 출력하면
이렇게 링크가 없는 경우
none이 출력된다.
none이 출력되는 경우를
해결하기 위해
코드를 수정한다.
for result in results:
title = result.find("h2", {"class": "title"})
anchor = title.find("a")["title"]
print(anchor)
anchor = title.find("a")["title"]
print(anchor)
이렇게 바꾸어 출력하면
none이 출력되지 않는다.
["title"]은
anchor의 title 속성 값을
얻어오는 것인데
속성 값이 없다면 에러가 된다.
none으로 출력되던 것이
파이썬 인공지능 알고리즘으로
출력되었다.
title을 추출하고
anchor를 출력할 때
none이 출력되는 것까지
해결한 뒤
코드를 정리한다.
indeed.py
extract_indeed_jobs()함수
def extract_indeed_jobs(last_page):
jobs = []
# for page in range(last_page):
result = requests.get(f"{URL}&start={0*LIMIT}")
soup = BeautifulSoup(result.text, 'html.parser')
results = soup.find_all("div", {"class": "jobsearch-SerpJobCard"})
for result in results:
title = result.find("h2", {"class": "title"}).find("a")["title"]
print(title)
return jobs
정리하면
result는 일자리 목록이 있고,
거기서 div를 찾는데
class 명이 title이어야 한다.
그리고 그 안에서
anchor를 찾아서
anchor의 속성인
title을 가져오는 것이다.
'Developer > Python - 웹 스크래핑' 카테고리의 다른 글
[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 strip()으로 공백 지우기 (0) | 2021.02.16 |
---|---|
[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 Company 추출하기 (0) | 2021.02.14 |
[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 페이지 요청 (0) | 2021.02.09 |
[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 정보 추출 Extracting 2 (0) | 2021.02.09 |
[파이썬] 파이썬으로 웹 스크래퍼 만들기, Part 2 정보 추출 Extracting (0) | 2021.02.04 |