Web Scrapper_03
2. 구직 정보 가져오기(Stack Overflow)
이전의 indeed 사이트의 구직정보를 불러올 때와 마찬가지로 코드가 구성된다.
2.1 마지막 페이지 구하기
def get_last_page():
result = requests.get(URL)
soup = BeautifulSoup(result.text, "html.parser")
pages = soup.find("div", {"class": "s-pagination"}).find_all("a")
last_page = pages[-2].get_text(strip=True) # 2.1.1
return int(last_page)
2.1.1 -1이 마지막 수이고 -2가 그 앞의 수/ strip=true를 이용해 white space 없애주기
Beautiful Soup을 이용하여 텍스트 추출하기
- get_text()
get_text()를 이용하면 한 번에 현재 HTML 문서의 모든 텍스트를 추출할 수 있다. 조금 더 정확히 표현하면 get_text() 메서드는 현재 태그를 포함하여 모든 하위 태그를 제거하고 유니코드 텍스트만 들어있는 문자열을 반환한다.- string
- 태그(tag) 내 문자열을 반환한다.
- 태그(tag) 내 자식 태그가 둘 이상이면, 무엇을 반환해야 하는지 명확하지 않기 때문에 None을 반환한다.
- 단 자식 태그가 하나이면서, 그 자식 태그가 .string 값을 가지고 있다면 자식 태그의 문자열을 반환한다.
- 출처 : https://hogni.tistory.com/21
2.2 구직정보 dictionary
def extract_job(html): # 2.2.1
title = html.find("div", {"class": "grid--cell fl1"}).find("h2").find("a")["title"]
company, location = html.find("h3", {"class": "mb4"}).find_all("span", recursive=False)
# 2.2.2 # 2.2.3
company = company.get_text(strip=True)
location = location.get_text(strip=True)
job_id = html['data-jobid']
return {
'title':title,
'company':company,
'location':location,
"apply_link": f"https://stackoverflow.com/jobs/{job_id}"
}
2.2.1 soup object
2.2.2
리스트에 요소가 두개일 때 값을 따로 불러올 시
company_row = html.find("h3", {"class": "mb4"}).find_all("span", recursive=False)
company = company_row[0]
location = company_row[1]
위의 코드를 아래와 같이 작성 가능하며 같은 결과를 얻을 수 있다.(unpacking values)
company, location = html.find("h3", {"class": "mb4"}).find_all("span", recursive=False)
2.2.3
하위 첫번째 단계의 해당 값만 가져오기 위해 recursive=false 사용
unpacking values(요소가 두개임을 알고 있기에 사용가능)
2.3 구직정보 list
def extract_jobs(last_page):
jobs = []
for page in range(last_page):
print(f"Scrapping SO: Page {page}")
result = requests.get(f"{URL}$ppg={page+1}")
soup = BeautifulSoup(result.text, "html.parser") # 2.3.1
results = soup.find_all("div", {"class": "-job"})
for result in results:
job = extract_job(result)
jobs.append(job)
return jobs
2.3.1 같은 변수명이여도 각자의 함수 스코프 안에서만 존재하기 때문에 사용 가능
Author And Source
이 문제에 관하여(Web Scrapper_03), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rin0702/Web-Scrapper03저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)