50.java怎么爬虫?_java写爬虫程序

createh52个月前 (02-27)技术教程7

文章目录

    • 前言
        • 1.引入依赖:
        • 2.代码实战:
        • 3.代理说明:
    • 总结

前言

现在一提到爬虫都是python,类库比较丰富,如果不会java的同学,去学习python爬虫比较靠谱,但是那是不是代表java就不能爬虫呢?肯定不是的,事实上一些场景下,java爬虫使用起来更方便,更好用。

1.引入依赖:

java当中爬虫使用的是jsoup的类库,jsoup提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据,让你请求网页后可以对网页进行dom操作达到爬虫的目的。

 
            org.jsoup
            jsoup
            1.10.3
        

2.代码实战:

案例一:
爬虫股票的分析结果:

 StockShow stockShow = new StockShow();
        String doUrl = String.format("url", stockCode);
        Document doc = null;
        try {
            doc = Jsoup.connect(doUrl).get();
            Elements stockName = doc.select("div[class=stockname]");
            Elements stockTotal = doc.select("div[class=stocktotal]");
            Elements shortStr = doc.select("li[class=short]");
            Elements midStr = doc.select("li[class=mid]");
            Elements longStr = doc.select("li[class=long]");
            Elements stockType = doc.select("div[class=value_bar]").select("span[class=cur]");
            stockShow.setStockName(stockName.get(0).text());
            stockShow.setStockTotal(stockTotal.get(0).text().split(":")[1]);
            stockShow.setShortStr(shortStr.get(0).text().split(":")[1]);
            stockShow.setMidStr(midStr.get(0).text().split(":")[1]);
            stockShow.setLongStr(longStr.get(0).text().split(":")[1]);
            stockShow.setStockType(stockType.get(0).text());
        } catch (IOException e) {
            log.error("findStockAnalysisByStockCode,{}",e.getMessage());
        }

案例2:
抓取学校的信息:

 Campus campus = new Campus();
        String doUrl = String.format(url, campusId);
        Document doc = null;
        if (StringUtils.isEmpty(arg.getIp())){
            arg.setIp("transfer.moguproxy.com");
            arg.setPort(9001);
        }
        try {
            HttpsUtil.trustEveryone();
            Random r = new Random();
            int random = r.nextInt(48);
            Connection conn = Jsoup.connect(doUrl).proxy(arg.getIp(), arg.getPort());//.timeout(10000)
            conn .header("Proxy-Authorization", "Basic "+"V1Vxb2syU29MbUJWTVY2RjpMTHN5TDM0c3ByQlFRM3hw").userAgent(ua[random]).timeout(30000);
            doc = conn.get();
            Elements names = doc.select("a[class=btn btn-xs btn-primary]");
            Elements type = doc.select("a[class=campus_type_fix_b link_now_active]");
//            doc.select("ol[class=breadcrumb]").select("li").get(4).text()
            Elements campusName = doc.select("ol[class=breadcrumb]").select("li");
            Elements addressAndTel = doc.select("div[class=page-header]").select("p");

3.代理说明:

案例一里面并没有使用代理ip,可以直接抓取。但是通常情况下,我们抓取的网站会设置反爬虫,封ip等,所以我们要设置代理ip,上线的案例2中使用的是蘑菇代理的代理隧道进行的代理设置,用起来还不错,如果确实需要可以进行购买。

总结

当然我上面写的2个案例只是举例子,其实dom的操作还有很多种的方法,大家如果想要进行爬虫,dom的基本操作肯定是需要的,一些基本的html知识是需要的。如果你想跟我有更多的交流,关注我的公众号:Java时间屋 进行交流。

相关文章

「穷酸」文科生和天坑专业人,正在争夺码农Offer

封面图逃离“天坑专业”,拿下那个码农Offer一次“极大的震撼”,让经济学二本毕业的李晓晨,萌生了必须转行做码农的想法。大四实习期间,她在广西一家私企做过一段时间HR,整理工资单时她发现——3年工作经...

java使用spring mvc开发微信公众号验证开发者步骤

这几年微信公众平台开发比较热门,但是微信公众平台的SDK和java的sample比较少,很多都是靠自己摸索,首先进行微信公众号的开发,你必须得有个公众号或者测试号,有了这些条件后,你可以在后台里面进行...

Spring Boot 开发微信公众号_spring boot开发微信小程序

在讲微信公众号开发之前,先来大概了解一下微信公众号。微信公众号大体上可以分为服务号和订阅号,订阅号和服务号的区别如下:服务号可以申请微信支付功能。服务号只能由企业申请,订阅号可以由企业或个人申请。订阅...

java使用spring mvc开发微信公众号获取token

上一节我们说到验证开发者的服务器的步骤,由于官方提供的只是php部分的源码,对于不懂PHP的服务器部署可能不知道怎么处理,所以我就写了java的验证服务器的源码,今天我继续进行微信公众号的开发,获取t...

wechatty-project 一个基于JAVA的微信公众号的开发框架

GitHub - chensheng/wechatty-project: Wechattty Project是一个基于JAVA的微信公众号(包括服务号和订阅号)和微信企业号的开发框架,封装良好的API...

青岛的程序员,能去哪里混口饭吃?

原创:码农参上(微信公众号ID:CODER_SANJYOU),欢迎分享,转载请保留出处。十一前,Hydra的一个好朋友离职去了北京那边的一家公司,说真的,我们打心底替他感到高兴,年轻人就应该出去闯荡一...