文章目录前言1.引入依赖:2.代码实战:3.代理说明:总结序现在说到爬虫,都是python,类库丰富。如果你不懂java,学python爬虫比较靠谱,但这就代表java不会爬吗?不是,其实在某些场景下,java
前言1.引入依赖:2.代码实战:3.代理说明:总结
序现在说到爬虫,都是python,类库丰富。如果你不懂java,学python爬虫比较靠谱,但这就代表java不会爬吗?不是,其实在某些场景下,java爬虫更方便易用。
1.引入依赖性:其中,java crawler使用的是jsoup类库,jsoup提供了一套非常省力的API,可以通过dom、CSS以及类似jQuery的操作方法来获取和操作数据,让你在请求网页后,对网页进行DOM操作,达到爬虫的目的。
<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.3</version></dependency>
2.代码实践:案例1:
爬虫库存分析结果:
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()); }
案例二:
抓取学校信息:
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使用蘑菇代理的代理隧道设置代理,效果不错,如果真的需要可以购买。
摘要当然,我上面写的两个案例只是个例。其实dom的操作方法有很多种。如果要抓取,dom的基本操作肯定是需要的,还需要一些基本的html知识。如果想和我有更多的交流,关注我的微信官方账号:Java时光之家。