前言:

这个系列我分四个部分来分别接触四块知识,最后再串起来:
Java爬虫入门(一)——项目介绍 <https://blog.csdn.net/qq_38409944/article/details/81459761>
Java爬虫入门(二)——HttpClient请求
<https://blog.csdn.net/qq_38409944/article/details/81391543>
Java爬虫入门(三)——正则表达式 <https://blog.csdn.net/qq_38409944/article/details/80086278>
Java爬虫入门(四)——线程池和连接池
<https://blog.csdn.net/qq_38409944/article/details/81458987>
Java爬虫入门(五)——缓冲流写入 <https://blog.csdn.net/qq_38409944/article/details/80066953>
GitHub地址:
https://github.com/jjc123/Java-Crawler/blob/master/README.md

突然心血来潮想学一下爬虫,本来是打算学python的(学习成本不高),不过既然是搞java的,那就用java好啦,毕竟知识可以复用,而且java的爬虫框架库也不少。

来看个图解 ,相信对爬虫一目了然:

于是开始了爬虫填坑史
网上找了一些java爬虫的资料:
Java使用HttpClient发送Get和Post请求
<https://blog.csdn.net/qq_38409944/article/details/81387600>
零基础写Java知乎爬虫之先拿百度首页练练手 <https://www.jb51.net/article/57193.htm>
java爬虫入门 <https://www.jianshu.com/p/2a60992e901d>
爬虫一般分三步:
1. 建立网络连接,爬取数据 2. 建立正则表达式规范 3. 使用正则表达式爬取获得的数据
如果数据量比较庞大,可以选择线程池,连接池并发。
先定个小目标吧 :
爬取一个小说网站的小说下载到本地
小说网址:
https://www.bookbao8.com/BookList-c_0-t_2-o_1.html
项目要求:
JAVA爬虫 并发爬取静态小说网站的全部小说
数量级过万,理论上可行,不过测试的时候我就测试了100组而已。
涉及的知识:
1. HttpClient请求 2. 连接池并发 3. 线程池并发 4. 正则表达式 5. IO流保存本地文件
为什么选择爬取这一个静态网页呢? 因为:
对于刚入门的菜狗如我,就别想着爬知乎,百度,CSDN了。
因为我发现我爬的百度首页都是看不懂的编码格式,如:
.bdsug .bdsug-direct p{color:#00c;font-weight:700;line-height:34px;padding:0 8
px;cursor:pointer;white-space:nowrap;overflow:hidden} .bdsug .bdsug-direct p img
{width:16px;height:16px;margin:7px 6px 9px 0;vertical-align:middle} .bdsug
.bdsug-direct p span{margin-left:8px} .bdsug .bdsug-direct p i{font-size:12px;
line-height:100%;font-style:normal;font-weight:400;color:#fff;background-color:
#2b99ff;display:inline;text-align:center;padding:1px 5px;*padding:2px 5px 0;
margin-left:8px;overflow:hidden} .bdsug .bdsug-pcDirect{color:#000;font-size:14
px;line-height:30px;height:30px;background-color:#f8f8f8} .bdsug
.bdsug-pc-direct-tip{position:absolute;right:15px;top:8px;width:55px;height:15px
;display:block;background:url(https://ss1.bdstatic.com/5
eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/pc_direct_42d6311.png)
no-repeat0 0} .bdsug li.bdsug-pcDirect-s{background-color:#f0f0f0} .bdsug
.bdsug-pcDirect-is{color:#000;font-size:14px;line-height:22px;background-color:
#f8f8f8} .bdsug .bdsug-pc-direct-tip-is{position:absolute;right:15px;top:3px;
width:55px;height:15px;display:block;background:url(https://ss1.bdstatic.com/5
eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/pc_direct_42d6311.png)
no-repeat0 0} .bdsug li.bdsug-pcDirect-is-s{background-color:#f0f0f0} .bdsug
.bdsug-pcDirect-s .bdsug-pc-direct-tip,.bdsug .bdsug-pcDirect-is-s
.bdsug-pc-direct-tip-is{background-position:0 -15px} .bdsug .bdsug-newicon{color
:#929292;opacity:.7;font-size:12px;display:inline-block;line-height:22px;
letter-spacing:2px} .bdsug .bdsug-s .bdsug-newicon{opacity:1} .bdsug
.bdsug-newicon i{letter-spacing:0;font-style:normal} .bdsug .bdsug-feedback-wrap
{text-align:right;background:#fafafa;color:#666;height:25px;line-height:25px;
display:none}
原因我总结了几点:
网页最终显示的页面源码是经过浏览器解释后的,
你get或者post请求到的源码是服务器直接返回的,不一样是正常的。

最基础的爬虫只能爬取没有动态加载的纯静态网页,而目前主流的网站都是有反爬虫的措施,以及各种验证措施。就比如2017年知乎就已经改版了,爬虫更加困难,之前的关于知乎的爬虫项目也都是无效的,因为爬虫模式不一样的,也就是说更难了。
所以对于初学者来说,找一个简单的纯静态页面练手才是正道
1. 网页采用ajax等动态交互模式 爬取的信息可能只有一个div, 没有内容,要经过浏览器动态加载后才会显示本来面目 2.
网页采用js等浏览器渲染模式,爬取的信息都是看不懂的, 需要浏览器本身来解析成可看的内容3. 登陆验证:无法直接爬取网站信息,需要模拟浏览器访问网站才可 4.
同一个ip访问一个网站频率太高,被检测出爬虫,直接封杀, 所以你得让你的爬虫sleep一下,比如模拟人的规律5分钟爬取一次

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信