Java可以像Python一样方便爬去世间万物
前言:
- 之前在大二的时候,接触到了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一样方便爬去世间万物的更多相关文章
- Java基础-爬虫实战之爬去校花网网站内容
		
Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...
 - Python 2.7 爬取51job 全国java岗位
		
一页有50条数据一共2000页 分页是get分页 #!/usr/bin/python # encoding: utf-8 import requests import threading from ...
 - python unicode 转中文 遇到的问题  爬去网页中遇到编码的问题
		
How do convert unicode escape sequences to unicode characters in a python string 爬去网页中遇到编码的问题 Python ...
 - java批量爬去电影资源
		
摘要 网上有很多个人站来分享电影资源,其实有时候我们自己也想做这个一个电影站来分享资源.但是这个时候就有一个问题,电影的资源应该从哪里来呢?难道要自己一条条手动去从网络上获取,这样无疑是缓慢而又效率低 ...
 - 利用python的爬虫技术爬去糗事百科的段子
		
初次学习爬虫技术,在知乎上看了如何爬去糗事百科的段子,于是打算自己也做一个. 实现目标:1,爬取到糗事百科的段子 2,实现每次爬去一个段子,每按一次回车爬取到下一页 技术实现:基于python的实现, ...
 - python爬去电影天堂恐怖片+游戏
		
1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...
 - Python学习之路 (五)爬虫(四)正则表示式爬去名言网
		
爬虫的四个主要步骤 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的方式存储和使用) 什么是正则表达式 ...
 - Python爬虫之爬取慕课网课程评分
		
BS是什么? BeautifulSoup是一个基于标签的文本解析工具.可以根据标签提取想要的内容,很适合处理html和xml这类语言文本.如果你希望了解更多关于BS的介绍和用法,请看Beautiful ...
 - Python 入门网络爬虫之精华版
		
Python 入门网络爬虫之精华版 转载 宁哥的小站,总结的不错 Python学习网络爬虫主要分3个大的版块:抓取,分析,存储 另外,比较常用的爬虫框架Scrapy,这里最后也详细介绍一下. 首先列举 ...
 
随机推荐
- python3 第二十三章 - 函数式编程之Partial function(偏函数)
			
要注意,这里的偏函数和数学意义上的偏函数不一样,偏函数是2.5版本以后引进来的东西,属于函数式编程的一部分.前面章节中我们讲到,通过设定参数的默认值,可以降低函数调用的难度.而偏函数也可以做到这一点. ...
 - UVA 10534 Wavio Sequence
			
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=17&p ...
 - 学习pyyaml
			
网上查了一圈,觉得较好的yaml教程有: YAML 语言教程 :http://www.ruanyifeng.com/blog/2016/07/yaml.html. 另外,在github的pyyaml库 ...
 - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase] 错误
			
在一次改bug的过程,爆出了数据库错误,但是一看后面控制台,并没有爆出以前的具体的数据库错误的原因,而是 SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, In ...
 - 初识RabbitMQ
			
1.安装 rabbitmq官网:http://www.rabbitmq.com/ 下载地址:https://packagecloud.io/rabbitmq 下载rabbitmq-server 安装脚 ...
 - MySQL insert语句锁分析
			
最近对insert的锁操作比较费解,所以自己动手,一看究竟.主要是通过一下三个sql来看一下执行中的sql的到底使用了什么锁. select * from information_schema.INN ...
 - Js表单验证控件-02 Ajax验证
			
在<Js表单验证控件(使用方便,无需编码)-01使用说明>中,写了Verify.js验证控件的基本用法,基本可以满足大多数验证需求,如果涉及服务端的验证,则可以通过Ajax. Ajax验证 ...
 - LOJ#6387 「THUPC2018」绿绿与串串 / String (Manacher || hash+二分)
			
题目描述 绿绿和 Yazid 是好朋友.他们在一起做串串游戏. 我们定义翻转的操作:把一个串以最后一个字符作对称轴进行翻转复制.形式化地描述就是,如果他翻转的串为 RRR,那么他会将前 ∣R∣−1个字 ...
 - 用vue-cli脚手架搭建一个仿网易云音乐的全家桶vue项目
			
一,vue-cli环境搭建 1,全局安装webpack npm install webpack -g 2,安装vue脚手架 npm install vue-cli -g 3,新建一个新的project ...
 - Maven - 实例-3-自动创建Maven目录骨架
			
archetype插件用于创建符合maven规定的目录骨架 方式一:根据提示设置相关参数 guowli@5CG450158J MINGW64 /d/Anliven-Running/Zen/Eclips ...