Java爬蟲入門(一)——專案介紹
前言:
這個系列我分四個部分來分別接觸四塊知識,最後再串起來:
Java爬蟲入門(一)——專案介紹
Java爬蟲入門(二)——HttpClient請求
Java爬蟲入門(三)——正規表示式
Java爬蟲入門(四)——執行緒池和連線池
Java爬蟲入門(五)——緩衝流寫入
GitHub地址:
https://github.com/jjc123/Java-Crawler/blob/master/README.md
突然心血來潮想學一下爬蟲,本來是打算學python的(學習成本不高),不過既然是搞java的,那就用java好啦,畢竟知識可以複用,而且java的爬蟲框架庫也不少。
來看個圖解 ,相信對爬蟲一目瞭然:
於是開始了爬蟲填坑史
網上找了一些java爬蟲的資料:
Java使用HttpClient傳送Get和Post請求
零基礎寫Java知乎爬蟲之先拿百度首頁練練手
java爬蟲入門
爬蟲一般分三步:
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 8px;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:14px;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/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/pc_direct_42d6311.png) no-repeat 0 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/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/global/img/pc_direct_42d6311.png) no-repeat 0 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分鐘爬取一次
相關文章
- Scrapy入門-第一個爬蟲專案爬蟲
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- scrapy入門教程()部署爬蟲專案爬蟲
- Python爬蟲入門學習實戰專案(一)Python爬蟲
- Python爬蟲教程-32-Scrapy 爬蟲框架專案 Settings.py 介紹Python爬蟲框架
- 通用新聞爬蟲開發系列(專案介紹)爬蟲
- 爬蟲介紹爬蟲
- 專案之爬蟲入門(豆瓣TOP250)爬蟲
- puppeteer介紹(一)爬蟲,效能,注入爬蟲
- 爬蟲工程師的入門簡介爬蟲工程師
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- 想成為Python高手,必須看這篇爬蟲原理介紹!(附29個爬蟲專案)Python爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- 第一章 爬蟲介紹爬蟲
- 爬蟲入門爬蟲
- Java爬蟲專案環境搭建Java爬蟲
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- 爬蟲專案實戰(一)爬蟲
- 基於大型語言模型爬蟲專案Crawl4AI介紹模型爬蟲AI
- Python爬蟲教程-34-分散式爬蟲介紹Python爬蟲分散式
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- 爬蟲專案爬蟲
- Python3爬蟲入門(一)Python爬蟲
- 精通Scrapy網路爬蟲【一】第一個爬蟲專案爬蟲
- Python爬蟲入門Python爬蟲
- 【爬蟲】爬蟲專案推薦 / 思路爬蟲
- (python)爬蟲----八個專案帶你進入爬蟲的世界Python爬蟲
- python爬蟲學習筆記 4.2 (Scrapy入門案例(建立專案))Python爬蟲筆記
- java語言的入門介紹Java
- 爬蟲入門第一章爬蟲
- 爬蟲小專案爬蟲
- 爬蟲專案部署爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- python-爬蟲入門Python爬蟲
- 爬蟲新手入門實戰專案(爬取筆趣閣小說並下載)爬蟲
- 如何快速建立一個爬蟲專案爬蟲
- 資料分析專案(一)——爬蟲篇爬蟲
- 第一個分散式爬蟲專案分散式爬蟲