博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java爬虫学习
阅读量:5749 次
发布时间:2019-06-18

本文共 3692 字,大约阅读时间需要 12 分钟。

java尝试爬取一些简单的数据,比python复杂点

 

  示例:爬取网站中的所有古风网名:,并储存入数据库(mysql)

    jdk版本:jdk1.8

    编辑器:idea

    项目构建:maven

    所需jar包:

    或maven依赖如下:

org.jsoup
jsoup
1.7.3

  

具体代码如下:

package com.ssm.web.timed;import java.io.IOException;import java.util.ArrayList;import java.util.List;import com.ssm.commons.JsonResp;import com.ssm.utils.ExportExcel;import org.apache.log4j.Logger;import org.jsoup.*;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;@RequestMapping@RestControllerpublic class TestCrawlerTime {    private Logger log = Logger.getLogger(this.getClass());    //根据url从网络获取网页文本    public static Document getHtmlTextByUrl(String url, String page) {        Document doc = null;        try {            //doc = Jsoup.connect(url).timeout(5000000).get();            int i = (int) (Math.random() * 1000); //做一个随机延时,防止网站屏蔽            while (i != 0) {                i--;            }            doc = Jsoup.connect(url + page).data("query", "Java")                    .userAgent("Mozilla").cookie("auth", "token")                    .timeout(300000).get();        } catch (IOException e) {            /*try {                doc = Jsoup.connect(url).timeout(5000000).get();            } catch (IOException e1) {                e1.printStackTrace();            }*/            System.out.println("error: 第一次获取出错");        }        return doc;    }    //递归查找所有的名字    public static List getAllNames(List
names, String url, String page){ Document doc = getHtmlTextByUrl(url, page); Elements nameTags = doc.select("div[class=listfix] li p"); //名字标签 for (Element name : nameTags){ names.add(name.text()); } Elements aTags = doc.select("div[class=page] a[class=next]"); //页数跳转标签 for (Element aTag : aTags){ if ("下一页".equals(aTag.text())){ //是下一页则继续爬取 String newUrl = aTag.attr("href"); getAllNames(names, url, newUrl); } } return names; } /** * @Description: 导出爬取到的所有网名 * @Param: * @return: * @Author: mufeng * @Date: 2018/12/11 */ @RequestMapping(value = "/exportNames") public JsonResp export(HttpServletResponse response){ log.info("导出爬取到的所有网名"); String target = "http://www.oicq88.com/"; String page = "/gufeng/1.htm"; List names = new ArrayList(); getAllNames(names, target, page); System.out.println(names.size()); List
lists = new ArrayList<>(); Integer i = 1; for (Object name : names){ lists.add(new Object[]{i, name}); i ++; } String[] rowName = new String[]{ "", "网名"}; ExportExcel exportExcel = new ExportExcel("古风网名大全", rowName, lists); try { exportExcel.export(response); } catch (Exception e) { e.printStackTrace(); } return JsonResp.ok(); } public static void main(String[] args) { String target = "http://www.oicq88.com/"; String page = "/gufeng/1.htm"; List names = new ArrayList(); getAllNames(names, target, page); System.out.println(names.size()); System.out.println(names.get(0)); System.out.println(names.get(names.size()-1)); }}

   运行结果如下:

    

    

 

 

  参考教程:

       

       

 

附:

转载于:https://www.cnblogs.com/mufengforward/p/9552256.html

你可能感兴趣的文章
monkey测试之获取系统应用对应的包名
查看>>
七牛云彭垚:智能平台的创新和发展
查看>>
随便写写
查看>>
nginx日志分割
查看>>
VIM之魅(下篇)
查看>>
4003.Cacti监控Windows 2003服务器系统关键性能指标
查看>>
随机抽取数字的脚本
查看>>
selenium之 定位以及切换frame(iframe)
查看>>
NULL0路由的作用(概述)
查看>>
win7下wubi安装ubuntu11.10 报错: Invalid tag data.
查看>>
tomcat部署web服务(一)
查看>>
JAVA基本数据类型转换
查看>>
Oracle 11g for Windows 简体中文版的安装过程
查看>>
yum源和mysql.php
查看>>
python操作XML方法之SAX
查看>>
zabbix服务端与客户端搭建搭建
查看>>
Open restaurant using the business density report
查看>>
KMS Guide
查看>>
回调函数实现冒泡法的多种排序
查看>>
华为交换机链路聚合命令
查看>>