-
파이썬 독학 10일차 BeautifulSoup(웹 파싱하기, 스크래핑) 4coding 2022. 9. 10. 00:00728x90반응형SMALL
9일 차 포스팅에서 구인을 하고 있는 기업의 이름과, 근무 시간 등을 스크랩했지만
결과에 html 태그가 끼여 있어 가독성이 무척 떨어졌다.
그래서 이번 포스팅엔 beautifulsoup의. string이라는 기능을 이용하여 item들만 간추려보겠다.
뷰티풀 수프의 문서를 살펴보면. string을 사용하면
스크래핑한 html 태그 안에 child가 스트링이라면 스트링을 가져올 수 있다고 되어있다.
아래와 같이 작성하면 태그는 제거하고 아이템만 가져올 수 있게 된다.
print(company_name.string,"\n", shift.string,"\n", region.string,"\n", title.string)
따란 정말 멋지고 가슴이 웅장해진다.
샤라웃 투 니코쌤 노마드코드 최고
더보기#웹을 가져오기 위해 requests의 get을 임포트 from requests import get #beautifulsoup 사용을 위해 임포트 from bs4 import BeautifulSoup base_url = "https://weworkremotely.com/remote-jobs/search?utf8=%E2%9C%93&term=" search_term = "python" #나중에 url과 검색어를 변경하여 재사용할 수 있게 f문자열 포매팅 response = get(f"{base_url}+{search_term}") #웹사이트에서 정상적인 응답(200)을 주지 않을때를 대비 if not response.status_code == 200: print("Can't request website") #정상이라면 페이지의 html 코드를 쫙 긁어 옴 else: #print(response.text) soup = BeautifulSoup(response.text, 'html.parser') #section의 jobs클래스 리스트를 만들어주자 jobs = soup.find_all('section', class_="jobs") for job_section in jobs: job_posts = job_section.find_all('li') #viewlall제거 job_posts.pop(-1) for post in job_posts: anchors = post.find_all('a') anchor = anchors[1] #list의 길이(len)을 알고 있다면 item들의 순서에 맞춰 변수명을 넣어줄 수 있음 company_name, shift, region = anchor.find_all('span', class_="company") link = anchor['href'] #find_all은 항상 list를 주기 때문에 title하나만 원해서 .find title = anchor.find('span', class_="title") print(company_name.string,"\n", shift.string,"\n", region.string,"\n", title.string) print("🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸🔸")
다음 포스팅엔 추출한 데이터들을 dic에 저장하여 관리해보겠다.
728x90반응형LIST'coding' 카테고리의 다른 글
파이썬 독학 12일차 refactor 리팩터링 (0) 2022.09.12 파이썬 독학 11일차 BeautifulSoup(웹 파싱하기, 스크래핑) 5 (0) 2022.09.11 파이썬 독학 9일차 BeautifulSoup(웹 파싱하기, 스크래핑) 3 (0) 2022.09.09 파이썬 독학 8일차 keyword argument 순서 상관없이 지정 (0) 2022.09.08 파이썬 독학 7일차 BeautifulSoup(웹 파싱하기, 스크래핑) 2 (0) 2022.09.07