노마드 코더 phython 강의 5일차 정리

야무GYM·2023년 2월 13일
post-thumbnail

2023 - 02 - 07

지난 프로젝트에서 좀 더 진전시켜보도록 한다.

from requests import get
from bs4 import BeautifulSoup

base_url = "https://weworkremotely.com/remote-jobs/search?term="

search_term = "java"

response = get(f"{base_url}{search_term}")

if response.status_code != 200:
  print("Can't request website")
else:
  soup = BeautifulSoup(response.text, "html.parser")
  jobs = soup.find_all('section', class_="jobs")
  print(len(jobs))

이 부분까지 했었는데, else부분에 추가로 넣을 것이다.

for job_section in jobs:
  job_posts = job_section.find_all('li')
  job_posts.pop(-1)
  for post in job_posts:
    print(post)
    print("/////////////////////")

for - in 문으로 jobs의 갯수만큼 loop를 돌린다.
find_all을 이용해 li태그가 들어간 것만 고를건데,

지금 보는 사진이 weworkremotely 사이트의 소스코드다.
각 li 마다 회사정보가 하나씩 들어가 있기 때문에 li를 찾아서 구분하려는 것이다.
그 정보를 job_posts에 저장해 둔다.

이 사진은 li 하위태그들을 보여준다.

코드에서 job_section은 list 이다. 따라서 list 함수를 사용할 수 있다는 것이다.
li마다 주소를 가지고 있다고 보면되는데, 우리는 마지막 li class="view-all"은 필요하지 않다. 그래서 이걸 지워주는 작업을 할건데,
li가 2개만 있을수도 3개 혹은 5개가 있을 수 있으니, 매번 마지막 주소만 지워주게끔 -1을 사용해 마지막 주소를 지워주도록 한다.

마지막으로 for - in 문으로 li의 갯수만큼 loop를 돌리고
li만 있는 각 코드들을 //////로 구분하여 확인 해준다.

그렇게 해서 나온 결과는 다음과 같다.
업로드중..
처음에 section에서 jobs가 들어있는 부분이 3개였고,
그 다음 회사별 /////로 나눠져 있다.
remotemore, socialhub, prospect,,,등으로 구분되어 있는것을 볼 수 있고, 우리가 지웠던 view_all 부분도 지워져서 보이지 않는것을 확인 할 수 있었다.

0개의 댓글