Skip to content

Commit f8c59cd

Browse files
committed
알바천국 웹스크랩퍼
1 parent 0c7d177 commit f8c59cd

File tree

1 file changed

+40
-1
lines changed

1 file changed

+40
-1
lines changed

homework6.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,43 @@ def write_company(company):
6161
"date": date
6262
}
6363
company['jobs'].append(job)
64-
write_company(company)
64+
write_company(company)
65+
66+
# 알바천국 홈페이지에서 슈퍼브랜드 채용 회사 정보 가져오기 (Line 18 ~ 32)
67+
# Line 18 ~ 21 : requests 와 beautifulSoup 라이브러리를 사용하여 알바천국 홈페이지에서 정보를 긁어 올 준비를 합니다.
68+
# 알바천국 홈페이지를 inspect 해보면 슈퍼브랜드 채용 정보는 id가 MainSuperBrand인 <div> 태그 안에 담겨있는 것을 확인할 수 있습니다.
69+
# main = alba_soup.find("div", {"id": "MainSuperBrand"})
70+
# 위와 같이 입력하여 슈퍼브랜드 채용 정보만 긁어옵니다.
71+
# 더 자세히 들어가면 <ul> 태그 밑에 <li> 태그 들이 존재하는데 각각의<li> 안에 회사 정보가 들어있습니다.
72+
# main 변수에 저장되어있는 html 코드들 중에 모든 <li> 태그들만 가져오기 위해 아래와 같이 작성해줍니다.
73+
# brands = main.find_all("li", {"class": "impact"})
74+
# 위의 코드는 main에 저장 되어 있는 html 코드 중에 클래스 이름에 "impact"가 포함된 <li> 태그들을 모두 찾아 brands 리스트에 저장합니다.
75+
# Line 24 ~ 26 : for문을 사용하여 brands 리스트에 저장 된 정보들을 차례로 하나씩 꺼내 회사의 링크와 회사명만 뽑아서 link, name 변수에 저장합니다.
76+
# 회사 링크는 클래스 명에 "goodsBox-info"가 포함된 a 태그 안에 있고 회사 명은 클래스 명에 "company"가 포함된 span 태그 안에 있습니다.
77+
# Line 27 ~ 29 : 필요로하는 정보의 html 코드가 담긴 변수들(name, link) 에서 텍스트만 뽑아내야 됩니다.
78+
# 혹시 모르니 if link and name: 을 작성하여 link와 name 모두 공백이 아닐때만 실행시켜주도록 하는 조건문을 사용합니다.
79+
# <a> 태그에서 링크는 "href" 라는 속성에 담겨있습니다.
80+
# link = link["href"]
81+
# 위에 적혀있는 코드는 link 변수에 link에 저장되어있는 html 코드에서 href 속성에 담겨있는 값만 추출하여 덮어쓰기 해줍니다.
82+
# 참고문서 : Attributes
83+
# name도 name = name.text 로 텍스트만 뽑아서 저장해줍니다.
84+
# Line 30 ~ 31 : 만약 회사 명에 파일 이름으로 쓸 수없는 특수문자(/, *, \, : 등) 가 있다면 .replace() 를 사용하여 다른 문자로 치환해줍니다.
85+
# 각 회사별 홈페이지로 들어가서 일자리 정보 가져오기 (Line 33 ~ 63)
86+
# company 라는 딕셔너리를 생성합니다. company 딕셔너리 안에는 회사명을 넣어주고 일자리들을 저장할 빈 리스트 선언해줍니다.
87+
# Line 33 ~ 34 : requests 와 beautifulSoup 라이브러리를 사용하여 link 변수에 저장되어 있는 회사 링크 안에 들어있는 일자리 정보들을 긁어오기 위해 준비합니다.
88+
# 각각의 일자리에서 가져와야 될 정보는 근무지(local), 회사명(title), 근무시간(time), 급여(pay), 등록일(date) 입니다.
89+
# Line 35 ~ 55 : 위에서 슈퍼브랜드 채용에서 회사 정보들을 가져왔던 것과 마찬가지로 일자리 정보가 담겨 있는 태그를 찾아 세부적으로 들어가서 원하는 정보를 추출하면 됩니다.
90+
# 단, 일자리 정보를 잘 보면 각각의 <tr> 태그에 들어가 있는 것을 확인할 수 있는데 <tr> 태그들 중에서도 class가 없는 태그들에만 제대로 된 정보가 들어가 있습니다.
91+
# 따라서 class가 없는 <tr> 태그들만 가져오기 위해 아래와 같이 작성합니다.
92+
# rows = tbody.find_all("tr", {"class": ""}) (36번째 줄 참고)
93+
# Line 56 ~ 62 : 추출한 정보들(local, title, time, pay, date)를 job 딕셔너리 안에 넣어줍니다.
94+
# Line 63 : 32번째 줄에서 생성하였던 company 딕셔너리 안에 있는 job 리스트에 방금 만들었던 job 딕셔너리를 추가해줍니다.
95+
# company 딕셔너리에는 다음과 같은 형태로 정보들이 저장 됩니다.
96+
# company = {'name' : '이마트' , 'jobs' : [{"place": "서울", "title" : "asdf".....}, {"place" : "경기", "title" : "111111".....}]}
97+
# 추출한 정보가 저장된 company 딕셔너리를 csv 파일로 내보내기 위해 write_company(company) 를 실행시켜줍니다.
98+
# write_company(company) 함수 (Line 9 ~ 15)
99+
# 추출한 정보들을 csv 파일로 만들기 위한 함수입니다.
100+
# 참고문서 : CSV 파일 읽기와 쓰기
101+
# Line 10 : csv 파일 이름은 회사 명으로 지정합니다.
102+
# Line 12 : 일자리 정보들을 넣기 전에 먼저 .writerow 를 사용하여 헤더를 추가해줍니다.
103+
# for문을 이용하여 company 딕셔너리의 "jobs"의 value 값만 csv 파일에 추가합니다.

0 commit comments

Comments
 (0)