Préface
Ce qui doit être dit à l'avance, c'est qu'en raison de la nature particulière des articles Toutiao d'aujourd'hui, il est impossible d'obtenir directement l'adresse de l'article. Vous devez obtenir l'ID de l'article, puis le faire épiller dans une URL avant l'accès. Je ne dirai pas beaucoup ci-dessous, il suffit de télécharger le code.
L'exemple de code est le suivant
classe publique Demo2 {public static void main (String [] args) {// liste des articles pour les pages Web qui doivent être rampées à chaîne url = "http://www.toutiao.com/news_finance/"; // Préfixe de la page Détails de l'article (Étant donné que les titres d'aujourd'hui sont tous dans le répertoire de groupe, le préfixe est défini et la page HTML obtenue via la demande) chaîne URL2 = "http://www.toutiao.com/group/"; // lien vers ce site Web Connexion Connexion = JSoup.Connect (URL); Document Content = NULL; essayez {// obtenir du contenu contenu = connection.get (); } catch (ioException e) {e.printStackTrace (); } // Convertir en chaîne String htmlstr = contenu.html (); // Parce que les articles des titres d'aujourd'hui sont assez bizarres, ils sont tous définis comme des variables via JS, vous ne pouvez donc pas obtenir la valeur en obtenant l'élément Dom String jsonstr = stringUtils.substringbetween (htmlstr, "var _data =", ";"); System.out.println (jsonstr); Map parse = (map) jsonObject.Parse (jsonstr); JSONArray PARSEARRAY = (JSONArray) parse.get ("real_time_news"); Map map = null; List <map> maps = new ArrayList <> (); // Transf le JSONArray, obtenez chaque objet JSON, puis convertissez-le en un objet MAP (dans ce cas, seul un groupe_id est nécessaire, il n'est donc pas nécessaire d'utiliser MAP) pour (int i = 0; i <parsearray.size (); i ++) {map = (map) parsearray.get (i); maps.add ((map) parsearray.get (i)); System.out.println (map.get ("Group_id")); } // Transft la collection de cartes obtenue avant, puis visitez ces pages de détails sur les pages séparément pour (map map2: maps) {connection = jsoup.connect (url2 + map2.get ("groupe_id")); essayez {document document = connection.get (); // Obtenez le titre des éléments d'article Title = Document.Select ("[class = article-title]"); System.out.println (title.html ()); // Obtenez la source de l'article et le temps de publication des éléments de l'article ArticleFo = document.Select ("[class = articleInfo]"); Elements src = articleInfo.Select ("[class = src]"); System.out.println (src.html ()); Elements time = articleInfo.Select ("[class = time]"); System.out.println (time.html ()); // Obtenir l'article ContentElements Contentele = Document.Select ("[class = Article-Content]"); System.out.println (contenule.html ()); } catch (ioException e) {e.printStackTrace (); }}}}Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article sera d'une aide à votre étude ou à votre travail. Si vous avez des questions, vous pouvez laisser un message pour communiquer.