前言:

  • 之前在大二的时候,接触到了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. Uncommon Words from Two Sentences LT884

    We are given two sentences A and B.  (A sentence is a string of space separated words.  Each word co ...

  2. ABP 异常处理 第四篇

    1.ABP异常处理机制是通过过滤器实现的,我们查看的webAPI的异常处理,我们来看看他的源码,AbpApiExceptionFilterAttribute 继承ExceptionFilterAttr ...

  3. Java 8 Lambda 表达式及 Stream 在集合中的用法

    简介 虽然 Java 8 已经发布有一段时间了,但是关于 Java 8 中的 Lambda 表达式最近才开始系统的学习,刚开始就被 Stream 的各种骚操作深深的吸引住了,简直漂亮的不像 Java. ...

  4. JDK源码核心包

    一.核心包有哪些? Jdk的包中,除开了lang包下面的类,用得最多的应该要属于util包下面的类了, 本篇文章主要针对Jdk的util包下面的类(util目录下面的类,暂时不包括util 包下面的子 ...

  5. Paper | 块分割信息 + 压缩视频质量增强

    目录 1. 亮点 2. 网络 3. Mask 及其融合 4. 结论 论文:Enhancing HEVC Compressed Videos with a Partition-Masked Convol ...

  6. nginx unit的初探

    安装介绍: https://www.oschina.net/p/nginx-unit 可以看到,unit还是很强大的,居然特么都支持go 还有python 在/etc/yum.repos.d/unit ...

  7. [solution] JZOJ3493 三角形

    [solution] JZOJ3493 三角形 Description 平面上有n个点,求出用这些点可以构成的三角形数. Input 第一行一个整数n. 接下来n行,每行两个整数,表示点的坐标. Ou ...

  8. 在Windows上安装Arduino的步骤

    在64位Windows 10机器上测试 Windows Installer从arduino.cc下载并安装最新的Arduino IDE 从git-scm.com下载并安装Git 开始Git GUI并运 ...

  9. linux 下动态链接实现原理

    符号重定位 讲动态链接之前,得先说说符号重定位. c/c++ 程序的编译是以文件为单位进行的,因此每个 c/cpp 文件也叫作一个编译单元(translation unit), 源文件先是被编译成一个 ...

  10. Java 中 & | ^ 运算符的简单使用

    背景 今天碰到了代码中的按位与运算,复习一下,先列一个各个进制数据表. 顺便复习一下十进制转二进制的计算方式: 接下来解释下这三个运算符: & 按位与,都转为二进制的情况下,同为1则为1,否则 ...