前言:

  • 之前在大二的时候,接触到了Python语言,主要是接触Python爬虫那一块
  • 比如我们常用的requests,re,beautifulsoup库等等
  • 当时为了清理数据和效率,还专门学了正则表达式,异常的佩服自己哈哈哈哈哈
  • 最近闲着无事干,秉承是Java是世界上最好的语言,Python能干,为啥Java不行
  • 说刚就刚,以下以两个小例子还说明Java做爬虫一样可以像Python哪样方便

技术:

  • SpringBoot
  • HttpClient
  • Jsoup
  • HttpClientUtil

贴吧一键签到:

  • 我们要知道,不管是你访问一个页面,还是登录注册
  • 本质就是发送Http请求
  • Http请求大致有四种
    • Get
    • Post
    • Delete
    • Put
  • 我们常用的也就是两种Get请求获取页面资源
  • Post请求发送数据
  • 所以我们的思路如下:
    • 向某个URL发送GET请求,获取HTML页面
    • 用正则或者第三方工具清理数据
    • 获得数据以后在进行后续操作
    • 比如在GET请求
    • 或者直接存到数据库中怎么样的

 

  1. 获取HTML页面:

 public void execute(String username) {
// 获取cookie
String cookie = getCookie(username);
// 获取首页html内容
String content = http.get("http://tieba.baidu.com/mo/", cookie);
// 获取所有连接
String links = getMore(content);
links = "http://tieba.baidu.com" + links;
// 获取所有贴吧html内容
content = http.get(links, cookie);
List<String> likesLink = getLike(content);
sign(likesLink, cookie, username);
}

  我们用第三方工具包 HttpClientUtil 可以直接发送Get请求(已经封装好的)

    2.清理数据:

 private void sign(List<String> likesLink, String cookie, String username) {
for (String link : likesLink) {
String content = http.get(link, cookie);
Document doc = Jsoup.parse(content);
Elements titles = doc.getElementsByClass("bc");
String title = titles.get(0).text();
title = title.split("吧")[0];
Elements links = doc.select("a[href]");
boolean flag = true;
for (Element ele : links) {
String ss = ele.attr("href");
ss = "http://tieba.baidu.com" + ss;
if (ss.contains("sign")) {
http.get(ss, cookie);
// 插入到数据库中
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
dao.insertRecord(username, title, date, "签到成功");
flag = false;
break;
}
}
if (flag) {
// 插入到数据库中
String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
dao.insertRecord(username, title, date, "已签到");
}
}
}

  我们这里用的第三方工具 Jsoup, Jsoup可以像DOM一样简单的获取任何东西。甚至你可以用这个则来进行获取。

  项目源码:贴吧一键签到

  项目地址:贴吧一键签到

爬取天涯房价的帖子:

  1. 获取HTML地址:

 public List<String> getContent() {

         List<String> res = new ArrayList<>();
// 92是固定的,帖子的总数
for (int i = 1; i <= 92; i++) {
String url = getUrl(i);
String content = http.get(url);
getParse(content, res);
}
return res;
}

  2.清理数据:

 private void getParse(String content, List<String> res) {

         Document doc = Jsoup.parse(content);
Elements links = doc.getElementsByClass("bd");
for (Element link : links) {
String str = link.toString();
Pattern pattern = Pattern.compile("<p>[.\\s\\S]+?div");
Matcher m = pattern.matcher(str);
while (m.find()) {
String s = m.group();
s = s.replaceAll("<", "");
s = s.replaceAll(">", "");
s = s.replaceAll("/", "");
s = s.replaceAll("p", "");
s = s.replaceAll("div", "");
s = s.replaceAll("\n", "");
res.add(s);
}
}
}

  项目源码:天涯社区帖子

总结:

  用Java做爬虫,无非两点

  • 获取HTML
  • 清理页面

  当我们这两点都会的时候,那么就十分的简单了。当然这里也用到了第三方的开源jar包

  • 获取HTML   =>  HttpClient
  • 清理数据      =>  Jsoup

  

ps.  如果你对爬虫也感兴趣,我之前写过一个爬知乎图片的爬虫  前方高能

  

  女生们被关注腿是什么感受?

  做一个可爱的女孩子是一种什么体验?

   怎样搭配才能显得腿长?

   平常人可以漂亮到什么程度?

  可以自己爬下来,慢慢欣赏,不用谢我 

Java可以像Python一样方便爬去世间万物的更多相关文章

  1. Java基础-爬虫实战之爬去校花网网站内容

    Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...

  2. Python 2.7 爬取51job 全国java岗位

      一页有50条数据一共2000页 分页是get分页 #!/usr/bin/python # encoding: utf-8 import requests import threading from ...

  3. python unicode 转中文 遇到的问题 爬去网页中遇到编码的问题

    How do convert unicode escape sequences to unicode characters in a python string 爬去网页中遇到编码的问题 Python ...

  4. java批量爬去电影资源

    摘要 网上有很多个人站来分享电影资源,其实有时候我们自己也想做这个一个电影站来分享资源.但是这个时候就有一个问题,电影的资源应该从哪里来呢?难道要自己一条条手动去从网络上获取,这样无疑是缓慢而又效率低 ...

  5. 利用python的爬虫技术爬去糗事百科的段子

    初次学习爬虫技术,在知乎上看了如何爬去糗事百科的段子,于是打算自己也做一个. 实现目标:1,爬取到糗事百科的段子 2,实现每次爬去一个段子,每按一次回车爬取到下一页 技术实现:基于python的实现, ...

  6. python爬去电影天堂恐怖片+游戏

    1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...

  7. Python学习之路 (五)爬虫(四)正则表示式爬去名言网

    爬虫的四个主要步骤 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 什么是正则表达式 ...

  8. Python爬虫之爬取慕课网课程评分

    BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...

  9. Python 入门网络爬虫之精华版

    Python 入门网络爬虫之精华版 转载 宁哥的小站,总结的不错 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下. 首先列举 ...

随机推荐

  1. javascript的异步编程

    同步与异步 介绍异步之前,回顾一下,所谓同步编程,就是计算机一行一行按顺序依次执行代码,当前代码任务耗时执行会阻塞后续代码的执行. 同步编程,即是一种典型的请求-响应模型,当请求调用一个函数或方法后, ...

  2. delphi 中OutputDebugString 函数的妙用(转载)

    原文地址 https://www.peganza.com/delphi-and-outputdebugstring.html Ever wanted to monitor your Delphi ap ...

  3. springBoot基础

    开始之前最基础的东东here 官网:http://projects.spring.io/spring-boot/ 基础快速构建:http://start.spring.io/ 松哥的博客:http:/ ...

  4. shell脚本基础教程

    一.什么是shell: shell解释:引用别人的话说:“Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.” 简而言之, ...

  5. 制作Visual Studio 2019 (VS 2019) 离线安装包

    与制作Visual Studio 2017的离线安装包(https://www.cnblogs.com/danzhang/p/6534341.html)类似,可以使用--layout的参数在安装前先下 ...

  6. 第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

    前言 大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢 JAVA 异常 try...catch...finally结构的使用方法 class Tes ...

  7. 腾讯云播放器更新——TCplayer

    概述 最近腾讯云播放器进行了更新,增加了TCplayer,支持点播播放.由于工作需要,了解了一下TCplayer,把心得记录下来,供以后开发时参考,相信对其他人也有用. 参考文档: TCPlayer开 ...

  8. 恭喜"微微软"喜当爹,Github嫁入豪门。

    今天是 Github 嫁入豪门的第 2 天,炒得沸沸扬扬的微软 Github 收购事件于昨天(06月04日)尘埃落定,微软最终以 75 亿美元正式收购 Github. 随后,Gitlab 趁势带了一波 ...

  9. 架构书籍推荐:Java中高级、架构师值得一读!

    上周我们免费送出了6本关于Python的重量级技术书籍,推出后反响特别强烈,有一个和最后一名仅差了一个赞,不过我们还是额外加送了一本送给这位朋友,以资鼓励,从另一面也可以看出Java程序猿对Pytho ...

  10. 内存管理cpuset,mempolicy[原理]

    介绍cpuset,mbind,set_mempolicy在内存管理上的应用 change log :确定先从mempolicy的man 手册翻译开始研究,计划如下 .先从man手册入手,通过实现mem ...