전체 코드임 !
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Main {
public static void main(String[] args) throws IOException {
int page = 3;
String url = "https://www.saramin.co.kr/zf_user/search?search_area=main&search_done=y&search_optional_item=n&searchType=search&searchword=java&recruitSort=relation&recruitPageCount=100&recruitPage="+page;
Document doc = Jsoup.connect(url).timeout(5000).get(); // 주소에 겟방식 요청 타임아웃은 5초는 기다려 준다는 것
Elements links = doc.select("a[href]");
// a태그인데 어트리뷰트로 href있는 것을 셀렉하는 것
// 채용공고만 보고싶으니까 채용공고의 공통된 path주소로 된 것만 남기고 지운다
Set<String> set = new HashSet<>();
for (Element e : links) {
String attr = e.attr("href");
if (attr.startsWith("/zf_user/jobs/relay/view")) {
set.add("https://www.saramin.co.kr" + attr);
}
}
// for (String metaUrl : set) {
// Document metaDoc = Jsoup.connect(metaUrl).timeout(2000).get();
// String desc =
// metaDoc.select("meta[name=description]").first().attr("content");
// System.out.println(desc);
// System.out.println("------------------");
// }
// 컬렉션은 스트림으로 바꿀 수 있다
// 병렬적으로 바꿔주는 스트림
// 맵은 하나하나 자료 연산을 통해 자료를 만든느 것
//셋을 문자열 스트림으로 만드는 것
set.parallelStream().map((metaUrl) -> {
// 원하는 람다형식 연산을 적어주면 됨
Document metaDoc = null;
try {
metaDoc = Jsoup.connect(metaUrl).timeout(2000).get();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return metaDoc.select("meta[name=description]").first().attr("content");
}).forEach(x -> System.out.println(x));
}
}
1. 일단 자바 프로젝트를 라이브러리 의존성 추가하여 사용하기 위해 configure 에서 메이븐 프로젝트로 전환해준다
2. pom.xml에 jsoup 라이브러리 의존성을 추가해준다
<!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.14.3</version>
</dependency>
3. 일단 크롤링할 사이트를 선정하자 나는 ㅅㄹㅇ !
4. 정보를 가져올 페이지를 세팅해놓고 page=앞까지 가져온다
java | 총 308건의 검색결과 - 사람인
java 검색결과 총 308건 - java에 대해 궁금하신가요? 관련 채용정보 87건,기업정보 126건,자료통 95건 등 취업에 꼭 필요한 자료를 사람인에서 확인해보세요.
www.saramin.co.kr
page= 뒤에는 내가 설정한 int page의 값으로 페이지를 조정할 것임
4. String url 에 내가 긁어온 주소를 대입하고
Document doc = Jsoup.connect(url).timeout(5000).get();
Jsoup의 connect를 통해 해당 주소에서 정보를 가져온다. Doucument 객체로 반환됨
5.해당 페이지에 모든 정보가 담기는데 나는 페이지에서 채용 링크만 가져오고 싶다!
Elements links = doc.select("a[href]");
a태그중 href를 어트리뷰트로 가지는 것으로 추려내는 것
그리고 링크들 중에서도 채용정보 링크만 가져오고 싶으니 f12를 눌러서 채용 정보로 넘어가는 태그가 가지는 공통적인 path를 알아와야함
6. href 중에서 공통적인 경로로 시작하는 것이 있으면 set에 넣어준 후 조회 한다
Set<String> set = new HashSet<>();
for (Element e : links) {
String attr = e.attr("href");
if (attr.startsWith("/zf_user/jobs/relay/view")) {
set.add("https://www.saramin.co.kr" + attr);
}
}
'JAVA' 카테고리의 다른 글
Jsoup을 이용하여 크롤링 하기 (0) | 2022.05.14 |
---|---|
mybatis 사용해보기 (0) | 2022.04.22 |
LocalDate 사용법 (0) | 2022.03.19 |
Client가 입력한 숫자를 더해주는 Sever (0) | 2022.03.11 |
Server Client 연결 연습 (0) | 2022.03.11 |