방명록
- [개인] 워크넷 맞춤 구직 정보 이메일로 받기 #3 | 정규식 적용2022년 04월 20일 15시 39분 43초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
| 정규식 적용
크롤링한 데이터의 "학력"에 불필요한 "\n\t\t\t\t\t\t\t\t\t\t"가 포함되어 있어서 replace()로 제거하였다. #2에서는 "\n\t\t\t\t\t\t\t\t\t\t"를 replace()의 파라미터로 복붙 하여 해결했는데, 이번에는 정규식을 적용하였다.
정규식에서 () 안의 문자열은 한 덩어리로 본다. +는 앞의 표현식이 1회 이상, *는 0회 이상 반복되는 부분과 대응한다.
/(\n)*(\t)*/
위와 같이 *만 사용하여 시도하였을 때는 [그림 1]과 같은 결과가 나왔다. 그래서 +, *를 각각 사용하여 문제를 해결할 수 있었다.
/(\n)+(\t)*/
전체 코드 중 정규식을 적용한 크롤링, 파싱 처리 부분은 다음과 같다.
// 2_crawling_worknet.js ... // 크롤링, 파싱 처리 const parsing = async (page) => { const $ = cheerio.load(page); const jobs = []; const $jobList = $("tbody tr"); $jobList.each((idx, node) => { const jobTitle = $(node).find(".cp-info-in:eq(0)").text().trim(); // 채용공고명 const url = "https://www.work.go.kr" + $(node).find(".cp-info-in > a").attr("href"); // 채용공고 상세 보기 url const company = $(node).find(".cp_name:eq(0)").text().trim(); // 회사명 const experience = $(node).find("em:eq(0)").text().trim(); // 경력 const education = $(node) .find("em:eq(1)") .text() .trim() // .replace("\n\t\t\t\t\t\t\t\t\t\t", ""); // 학력 .replace(/(\n)+(\t)*/, ""); // 학력(정규식 적용) const location = $(node).find("em:eq(2)").text().trim(); // 회사 위치 if (jobTitle != "") { jobs.push({ jobTitle, url, company, experience, education, location, }); } }); ...
728x90반응형'프로젝트 > [개인] Web Crawling E-Mail Service' 카테고리의 다른 글
[개인] 워크넷 맞춤 구직 정보 이메일로 받기 #2 | dotenv, nodemailer를 추가해 크롤링 정보를 개인 이메일로 발송 (0) 2022.04.15 [개인] 워크넷 맞춤 구직 정보 이메일로 받기 #1 | axios, cheerio 이용한 웹 크롤링 (0) 2022.04.14 다음글이 없습니다.이전글이 없습니다.댓글