ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파이썬 독학 18일차 range 함수(원하는 만큼 함수 반복)
    coding 2022. 9. 18. 00:00
    728x90
    반응형
    SMALL

    range는 순서 객체를 return 해주는 함수이다.

    즉 이건 list 같은 걸 즉석으로 만들 수 있게 해준다.

     

    코드를 다섯번 실행시키기 위해 지금까지 아는 방법으론

    for x in [1, 2, 3, 4, 5]:
      print x

    이런식으로 실행 했어야 한다.

     

    이젠 범위를 주는 return을 사용할 수 있다.

    range(5)를 실행시키면

    range(0, 5)를 리턴해준다.

    for i in range(5):
      print(i)

    를 실행하면 0 1 2 3 4가 출력된다.

    총 5개의 print를 볼 수 있다.

    즉 원한는 만큼의 list를 만들어준다.

     

    이에 파싱을 원하는 페이지의 갯수를 pages라고 했을 때

    3행의 for page in range(pages)를 통해 페이지의 갯수 만큼의 페이지를 파싱하게 된다.

    def extract_indeed_jobs(keyword):
      pages = get_page_count(keyword)
      for page in range(pages):
        options = Options()
        options.add_argument("--no-sandbox")
        options.add_argument("--disable-dev-shm-usage")
      
        base_url ="https://www.indeed.com/jobs?q="
        
        browser = webdriver.Chrome(options=options)
        
        browser.get(f"{base_url}{keyword}")
        
        # print(browser.page_source)
        ####################################################################
        results = []
        soup = BeautifulSoup(browser.page_source, 'html.parser')
        job_list = soup.find('ul', class_="jobsearch-ResultsList css-0")
        jobs = job_list.find_all('li', recursive = False)
        for job in jobs:
          zone = job.find("div", class_="mosaic-zone")
        if zone == None:
          # h2 = job.find("h2", class_="jobTitle")
          # a = h2.find("a")
          anchor = job.select_one("h2 a")
          title = anchor['aria-lable']
          link = anchor['href']
          comany_name = job.find("span", class_="companyName")
          location = job.find("div", class_="companyLocation")
          job_data = {
                    'link': f"https://kr.indeed.com{link}",
                    'company_name' : company_name.string,
                    'region' : location.string,
                    'positon' : title
                    # "🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸"
          }
          results.append(job_data)
          # print("🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸")
          
        
        
        
        
        
        
        
        for result in results:
          print(result, "\n//////\n")
    728x90
    반응형
    LIST

    댓글

Designed by Tistory.