파이썬 독학
-
파이썬 독학 19일차 변경되는 url 스크래핑coding 2022. 9. 19. 00:00
스크래핑을 하고 싶은 페이지가 여러개인 것을 확인하고 그 갯수를 가져오는 방법을 지난 포스팅에서 알아보았다. 이번 포스팅은 각 페이지의 response를 가져오는 방법을 알아보자. 타겟 페이지의 url이 페이지의 번호에 따라 변경 되는걸 확인할 수 있다. indeed.com/jobs?q=python&start=이후로 변경이 된다. 이는 우리 코드의 response=get(f"{base_url}?q={keyword}&strat=30&vjk=9f71b086ffa50691")에 해당이 된다. (참고로 q=는 쿼리다.) response=get(f"{base_url}?q={keyword}&strat=이곳의 숫자를 어떻게 변경하여야 할까") 이전 포스팅에서 배운 range 함수를 쓰고 싶지만 range는 1 2 3..
-
파이썬 독학 18일차 range 함수(원하는 만큼 함수 반복)coding 2022. 9. 18. 00:00
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)를 통해 페이지의 갯수 만큼의 페이지를 파싱하게 된다. d..
-
파이썬 독학 17일차 pagination 페이지 탐색coding 2022. 9. 17. 00:00
이제 직업 목록을 파싱해오는 것은 끝났다. 그 다음으로 중요한 페이지를 공부해볼 것이다. 사이트의 job list는 한 페이지만 있지 않다. 여러개의 페이지가 있으며 몇 개의 페이지가 있는지 알아 냈다면 각 페이지에 browser.get을 요청할 것이다. 페이지를 살펴보니 총 6개의 pagination 가 있다. 이 전 포스팅과 같은 방법으로 가져오면 끝 from selenium import webdriver from selenium.webdriver.chrome.options import Options from bs4 import BeautifulSoup def get_page_count(keyword): options = Options() options.add_argument("--no-sandbox..
-
파이썬 독학 15일차 recursive와 None타입의 활용coding 2022. 9. 15. 00:00
1. 하위의 를 또 가져올 때 job의 li는 잘 가져 왔지만 아래 사진과 같이 li 항목 아래에 있는 li를 또 가져오고 있다. 아래에 있는 li는 필요 없다면 어떻게 해결해야 할까? 바로 recursive(재귀 함수를 활용할 수 있다.) 보통은 아래처럼 자기 자신을 반복할 때 사용하지만 def recursive_function(i): # 100번째 호출을 했을 때 종료 if i== 100: return 역으로 recursive = False 를 작성하면 첫번째 만 찾고 그 하위의 항목은 더 이상 찾지 않게 된다. 아래와 같이 작성하면 된다. soup = BeautifulSoup(browser.page_source, 'html.parser') job_list = soup.find('ul', class_..
-
파이썬 독학 14일차 NONE 과 자료형coding 2022. 9. 14. 00:00
파이썬엔 몇 가지 주요 자료형이 있는데 bool = True or False boolean 방식 int = integral 정수 float = floating 실수 complex = 복소수 str = string 문자 tuple = n개의 요소로 된 집합 list = 리스트 dict = dictionary function = def f(): print(type(f)) 함수 이 중 None은 헷갈리고 재미있다. none은 무언가가 없을 때 사용한다. False랑은 다르다 Flase는 True가 아닐 때 사용하지만 None은 무언가가 있어야 하는데 아무것도 없을 때 사용한다. 이 전과 전전 포스팅에서 indeed 웹의 html을 스크랩 해올 때 job class를 기대하고 li를 가져 왔지만 엉뚱하게도 mo..
-
파이썬 독학 13일차 selenium 설치 (403오류 해결)카테고리 없음 2022. 9. 13. 00:00
VS code 등 로컬에서 작성하시는 분은 아래와 같이 해주세요. 더보기 셀레니움 설치 pip install selenium (혹은 pip3 install selenium) 드라이버 설치 크롬 : https://sites.google.com/a/chromium.org/chromedriver/downloads 파이어폭스 : https://github.com/mozilla/geckodriver/releases 사파리 : https://webkit.org/blog/6900/webdriver-support-in-safari-10/ (mac은 brew가 편해요 brew install chromedriver) 만약 페이지 파싱중 사이트에 봇 판별 기능이 추가 되었다면 아래처럼 403오류와 함께 anti-bot co..
-
파이썬 독학 12일차 refactor 리팩터링coding 2022. 9. 12. 00:00
이전 포스팅에 만든 weworkremotely 홈페이지 파싱의 코드를 재사용하기 위해 정리를 해주었다. extractors라는 폴더를 만들고 하위에 wwr.py 파일을 만든 뒤 코드를 복사해주었다. from requests import get #beautifulsoup 사용을 위해 임포트 from bs4 import BeautifulSoup def extract_wwr_jobs(keyword): #웹을 가져오기 위해 requests의 get을 임포트 base_url = "https://weworkremotely.com/remote-jobs/search?utf8=%E2%9C%93&term=" #나중에 url과 검색어를 변경하여 재사용할 수 있게 f문자열 포매팅 response = get(f"{base_ur..
-
파이썬 독학 11일차 BeautifulSoup(웹 파싱하기, 스크래핑) 5coding 2022. 9. 11. 00:00
이번 포스팅에선 깔끔하게 스크래핑 해온 아래의 데이터 결과를 한 곳에 저장해보자. 회사명, 근무 시간, 지역 등의 key 값이 있으니 무언가 떠오르지 않는가? 정답이다. 바로 파이썬의 dictionary데이터 타입을 이용해 정리해보자. 1. 가장먼저 for loop의 밖에 비어 있는 results = [ ]리스트를 만들어주고 2. 가져온 스트링 값들을 job_data의 dic에 key값과 함께 정리해주고 3. .append를 사용해 튜플 값을 리스트에 넣어준다. 4. for loop의 밖에서 result 값을 출력해주면 끝 더보기 #웹을 가져오기 위해 requests의 get을 임포트 from requests import get #beautifulsoup 사용을 위해 임포트 from bs4 import ..