Jsoup爬取凤凰网2018-09-22日部分新闻[笔记] ---- 根据URL规律爬取多篇凤凰网新闻内容(测试单线程版本)

这个方法缺点是速度慢,优点是暂时不用考虑数据共享的问题,但是单线程去爬虫还是有很大缺点的,
暂时先写一个单线程的,下次再此基础上优化出多线程版本。



package com.lhsjohn.spider;

import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupTest2 {

    public static void main(String[] args) throws Exception {
        int index = 118;
        String Sindex = "";

        while (index <= 999) {
            if (index <= 9) {
                Sindex = "00" + index;
            }
            if (index > 9 && index <= 99) {
                Sindex = "0" + index;
            }
            if (index > 99) {
                Sindex = "" + index;
            }
            index++;
            System.out.println(Sindex);
            crawNews(Sindex);
        }
        
    }

    public static void crawNews(String index) throws Exception {
        String url = "http://news.ifeng.com/a/20180922/60080" + index + "_0.shtml";
        org.jsoup.nodes.Document document = Jsoup.connect(url).timeout(50000000).get();
        String selection = ".yc_main.wrap";
        Elements elements = document.select(selection);
        // if (!elements.isEmpty()) {
        // Element element = elements.get(0);
        // }
        if(elements.isEmpty()) {
            Elements elements2 = document.select("#artical #artical_topic");
            if(!elements2.isEmpty()) {
                System.out.println(elements2.get(0).text());
                return;
            }else {
                return;
            }
        }
        Element element = elements.get(0);
        Elements elements2 = element.select(".yc_tit");
        if (!elements2.isEmpty()) {
            Element element2 = elements2.get(0);
            Elements children = element2.children();
            for (Element element3 : children) {
                // System.out.println(element3.tagName());
                if (element3.tagName().equals("h1")) {
                    System.out.println("标题:" + element3.text());
                }
                if (element3.tagName().equals("p")) {
                    Elements children2 = element3.children();
                    Element element4 = children2.get(0);
                    System.out.println("时间:" + element4.text());
                    Element element5 = children2.get(1);
                    System.out.println("来源:" + element5.text());
                    System.out.println("来源链接:" + element5.attr("href"));
                }

            }

        }

    }








最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在一个方法内部定义的变量都存储在栈中,当这个函数运行结束后,其对应的栈就会被回收,此时,在其方法体中定义的变量将不...
    Y了个J阅读 4,445评论 1 14
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,144评论 1 32
  • 1. 周末两天收到了很多同学的私信:感觉失去了学习的动力,整天浑浑噩噩地不知道做什么好。 这些私信让我想起来自己高...
    黎饭饭阅读 7,390评论 2 31
  • 红尘嚣嚣尽疯狂,尘嚣归夜仍不休。 多少苍生夜无眠,倘若梦香是福修。 劝君放下重重事,夜晚心空无所忧。
    徐一村阅读 215评论 0 2
  • 最近听到的最让人生气的话,莫过于下面这一段: 去看电影吧? 什么电影? 《乘风破浪》。 不去,从不会花钱去电影院看...
    胡李胡荼阅读 402评论 3 1