머리말
미리 말해야 할 것은 오늘날의 Toutiao 기사의 특별한 특성으로 인해 기사의 주소를 직접 얻는 것은 불가능하다는 것입니다. 기사의 ID를 얻은 다음 액세스하기 전에 URL로 연결해야합니다. 아래에서 많이 말하지 않고 코드를 업로드하겠습니다.
샘플 코드는 다음과 같습니다
public class demo2 {public static void main (String [] args) {// 크롤링 해야하는 웹 페이지의 기사 목록 url = "http://www.toutiao.com/news_finance/"; // 기사 세부 사항 페이지의 접두사 (오늘의 헤드 라인은 모두 그룹 디렉토리에 있으므로 접두사가 정의되고 요청을 통해 html 페이지가 얻어 졌으므로 String url2 = "http://www.toutiao.com/group/"; //이 웹 사이트에 링크 연결 Connection = jsoup.connect (url); 문서 내용 = null; {// 컨텐츠 컨텐츠 가져 오기 = connection.get (); } catch (ioexception e) {e.printstacktrace (); } // 문자열로 변환 htmlstr = content.html (); // 오늘날의 헤드 라인의 기사는 매우 이상하기 때문에 모두 JS를 통해 변수로 정의되므로 DOM 요소 String = StringUtils.subStringBetween (htmlstr, "var _data =", ";")을 얻음으로써 값을 얻을 수 없습니다. System.out.println (jsonst); MAP PARSE = (MAP) JSONOBJECT.PARSE (JSONST); jsonarray parsearray = (jsonarray) parse.get ( "real_time_news"); 지도 맵 = null; List <map> 맵 = New ArrayList <> (); // JSONARRAY를 전송하고 각 JSON 객체를 가져온 다음 맵 객체로 변환합니다 (이 경우 그룹_ID 만 필요하므로 맵을 사용할 필요가 없습니다. maps.add ((지도) parsearray.get (i)); System.out.println (map.get ( "group_id")); } // 이전에 얻은 맵 컬렉션을 전송 한 다음이 기사 세부 사항 페이지를 개별적으로 방문합니다 (Map Map2 : Maps) {Connection = jsoup.connect (url2+map2.get ( "group_id")); try {document document = connection.get (); // 기사 요소의 제목을 가져옵니다. 제목 = document.select ( "[class = article-title]"); System.out.println (title.html ()); // 기사의 출처와 기사 요소의 릴리스 시간을 가져옵니다. 요소 src = articleinfo.select ( "[class = src]"); System.out.println (src.html ()); 요소 time = articleinfo.select ( "[class = time]"); System.out.println (time.html ()); // 기사를 가져옵니다 contentElements contentELE = document.select ( "[class = article-content]"); System.out.println (contentele.html ()); } catch (ioexception e) {e.printstacktrace (); }}}}요약
위는이 기사의 전체 내용입니다. 이 기사의 내용이 귀하의 연구 나 업무에 도움이되기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다.