[Python, web

메인 페이지

extractors.jobkr에서 import_extract_jobkr_jobs
extractors.wwr 가져오기 extract_wwr_jobs에서

keyword = input(“어떤 직책을 찾으십니까?”)

# 목록이기 때문에 목록을 반환하기 때문에 둘 다 결합할 수 있습니다.

jobkr = extract_jobkr_jobs(키워드)
wwr = extract_wwr_jobs(키워드)
작업 = jobkr + wwr

# CSV 파일 열기
파일 = 열기(f”{키워드}.csv”, “w”, 인코딩=”utf-8″)
# 쉼표로 구분된 값이므로 \n은 맨 뒤에 써야 함
file.write(“회사, 직책, 소재지, 링크\n”)

# 두 개의 목록을 결합하기 때문에(jobkr+wwr- 둘 다 목록임) for 루프를 만들어야 합니다.

# 두 추출기는 동일한 키 이름(job_data) DICTIONARY를 사용하여 추출된 내용을 저장한다는 점을 기억하십시오.
작업의 작업:
# job(job_data)은 사전이므로 {Job}도 적어야 합니다.

# 사전에 저장된 값
파일.쓰기(
f”{job(‘회사’)},{job(‘position’)},{job(‘location’)},{job(‘link’)}\n”)

파일.닫기()

JOBKR 페이지

가져오기 요청에서 가져오기
bs4 BeautifulSoup에서 가져오기

# extractors.wwr import extract_wwr_jobs에서 가져오기
# 다른 폴더에서 불러오기
# extractors.jobkr에서 import_extract_jobkr_jobs

# 첫 번째 페이지를 요청해야 합니다.

def get_page_count(키워드):

# 검색의 첫 번째 페이지 요청
base_url=”https://www.jobkorea.co.kr/Search/?stext=”
응답 = get(f”{base_url}+{keyword}”)
response.status_code !
= 200인 경우:
print(“요청할 수 없습니다.
”)
# 첫 페이지 수프 만들기
다른:
수프 = BeautifulSoup(response.text, “html.parser”)
# 작업 대신 수프에서 페이지 번호 생성
# 하나만 찾으면 찾기, 모든 재귀가 찾으면 find_all
pagination_div = soup.find(“div”, class_=”tplPagination”)
페이지 매김 = pagination_div.find(“ul”)
페이지 매김 == 없음인 경우:
반환 1
페이지 = pagination.find_all(“li”)
개수 = 길이(면)
#10페이지 이상이면 10페이지만 반환!

숫자 >= 10인 경우:
뒤로 10
다른:
카운트 리턴

def extract_jobkr_jobs(키워드):
#scrape 할 페이지 수를 찾으려면 다음을 작성하십시오.
#range는 숫자의 범위를 생성합니다.

페이지 = get_page_count(키워드)
print(“발견”, 페이지, “페이지”)
# 꼭 나가야 하는
결과 = ()

범위 내 페이지(페이지):
# 첫 번째 검색의 경우 첫 번째 페이지에서 검색을 수행해야 합니다.

# 그런 다음 각 페이지 아래에서 함수를 호출합니다.

base_url=”https://www.jobkorea.co.kr/Search/?stext=”
final_url = f”{base_url}+{키워드}&tabType=모집&Page_No={페이지+1}”
인쇄(최종 URL)
응답 = get(final_url)

response.status_code !
= 200인 경우:
print(“요청할 수 없습니다.
”)
다른:
수프 = BeautifulSoup(response.text, “html.parser”)
job_list = soup.find(“div”, class_=”list-default”)
작업 = job_list.find(“ul”, class_=”지우기”)
# find_all을 사용하여 재귀 태그를 찾습니다.

job = jobs.find_all(“li”, class_=”list-post”)
작업의 job_section:
게시 = job_section.find_all(“div”, class_=”게시물”)

게시물의 job_section:
post_list = job_section.find(“div”, class_=”post-list-corp”)

# 회사 이름
회사명 = post_list.find(“a”)
회사 = 회사 이름(“제목”)
#지름길
link = 회사명(“href”)
# 회사 입장
post_list_info = job_section.find(“div”, class_=”post-list-info”)
title_name = post_list_info.find(“a”)
제목 = 제목 이름(“제목”)
# 위치
location_name = post_list_info.find(“p”, class_=”옵션”)
위치 = location_name.find(“스팬”, class_=”loc long”)
#위치
# position = location_name.find(“스팬”, class_=”exp”)
작업_데이터 = {
“회사”: 회사.대체(“,”, “”),
“위치”: title.replace(“,”, “”),
“위치”: 위치.문자열.대체(“,”, ” “),
“링크”: f”https://www.jobkorea.co.kr/Search/?stext=+{link}”,
# “제목”: 제목.문자열
}

결과.추가(작업_데이터)
# 함수에서 값 가져오기
# 항상 결과를 반환해야 합니다.

결과 반환

WWR 페이지

가져오기 요청에서 가져오기
bs4 BeautifulSoup에서 가져오기

def extract_wwr_jobs(키워드):
base_url = “https://weworkremotely.com/remote-jobs/search?utf8=%E2%9C%93&term=python”
응답 = get(f”{base_url}+{keyword}”)

response.status_code !
= 200인 경우:
print(“요청할 수 없습니다.
”)
다른:
결과 = ()
# 선택한 웹 페이지에서 모든 HTML 제거
수프 = BeautifulSoup(response.text, “html.parser”)
# 모든 HTML 파일에서 작업의 HTML 텍스트 일부만 가져오는 분류 작업을 시작합니다.

작업 = soup.find_all(“섹션”, class_=”작업”)
# 이제 위에서 제공한 목록에서 세부 선택을 시작합니다.

작업의 job_section:
# 선택한 섹션 html에서 li만 추출
job_post = job_section.find_all(“li”)
# 추출된 목록에서 마지막 항목은 필요하지 않으므로 건너뜁니다.

job_post.pop(-1)
# 이제 추출된 li 목록에서 앵커를 추출합니다.

job_post의 게시물:
앵커 = post.find_all(“a”)
앵커 = 앵커(1)
링크 = 앵커(“href”)
회사, 위치, 위치 =anker.find_all(“범위”, class_=”회사”)
# 이름을 지정하고 해당 태그만 가져옵니다.

제목 = Anchor.find(“범위”, class_=”제목”)
# 우리가 만든 것을 기반으로 사전을 만듭니다.

# `find_all`은 목록을 반환합니다.
목록에는 .string이 없습니다.

작업_데이터 = {
“회사”: company.string.replace(“,”, “”),
# “위치”: position.string.replace(“,”, ” “),
“위치”: title.string.replace(“,”, ” “),
“위치”: 위치.문자열.대체(“,”, ” “),
“링크”: f”https://weworkremotely.com+{링크}”
}
결과.추가(작업_데이터)

결과:
인쇄(결과)
결과 반환