简单的Java代码爬虫

简单的Java代码爬虫

最近接触了一下使用java代码爬虫的技术,做一下笔记!!!
说到为什么用java爬虫的原因其实最主要是不会Python,哈哈哈哈哈。

首先讲讲需求,主要的任务是,对固定的几个网页进行文章的爬取。
用java去爬虫最主要是用到了HttpUtils这个工具类,通过HttpUtils获得url的网络请求,通过XPath标签获得相对应的内容的标签

        HtmlPage xinwen = HttpUtils.getInstance().getHtmlPageResponse("这里填url");
        HtmlElement xinwenul = 
        (HtmlElement)xinwen.getByXPath("这里填XPath").get(0);
        //通过XPath获得ul标签,再通过ul标签获得里面的子元素
        Iterable<DomElement> childElements= xinwenul.getChildElements();

获得了子元素之后就可以进行迭代遍历了,通过遍历获取标签里面的超链接

while (childElements.iterator().hasNext()){
            DomElement next = childElements.iterator().next();
            String href = next.getLastElementChild().getFirstElementChild().getAttribute("href");
            urlList.add(href);

获取标签里面的内容主要看所在的层级,这个就要在一开始就要用浏览器对页面进行数据定位,获得层级的超链接后,就可以按照同上的逻辑进行数据采集和清洗了。

  for(String url:urlList){
            dataCaptureEntity=new OdsLxjzCrossStudy();
            HtmlPage htmlPage = HttpUtils.getInstance().getHtmlPageResponse(url);
            try {
                String title = ((HtmlElement) htmlPage.getByXPath("/html/body/div[4]/div[1]/div[2]/h1").get(0)).asText();
                title=HttpUtils.getInstance().stringTrimAll(title);
                dataCaptureEntity.setTitle(title);
                String time=((HtmlElement)htmlPage.getByXPath("/html/body/div[4]/div[1]/div[2]/div[1]").get(0)).asText();
                time=time.substring(0,time.indexOf(":")+3);
                SimpleDateFormat dtf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                dataCaptureEntity.setCreateTime(dtf.parse(time));
                String source = ((HtmlElement) htmlPage.getByXPath("/html/body/div[4]/div[1]/div[2]/div[1]/span").get(0)).asText();
                source=source.substring(source.lastIndexOf(": ")+1);
                dataCaptureEntity.setSource(source);
                HtmlElement htmlElement = (HtmlElement) htmlPage.getByXPath("//*[@id=\"UCAP-CONTENT\"]").get(0);
                DomNodeList<HtmlElement> pList = htmlElement.getElementsByTagName("P");
                String article="";
                for(HtmlElement element:pList){
                    String str=element.asText();
                    if(str.length()>10){
                        article+=element.asText();
                    }
                }
                dataCaptureEntity.setArticleContent(article);
                dataList.add(dataCaptureEntity);
            }catch (Exception e){
                continue;
            }
        }

经过清洗后,把数据存入对象就可以进行数据库的存入或者是页面的展示了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值