Java爬蟲與正則表達式——用正則來爬取數據

API

Java幫我們寫好的各種功能的Java類。這些Java類統稱為API。正則表達式就是API幫我們寫好的類。

正則表達式

例子:?

字符類:[abc]:只能是a,b或c

? ? ? ? ? ? ? [^abc]:除了a,b,c之外的任何字符

? ? ? ? ? ? ? [a-zA-Z]:滿足a-z以及A-Z這兩個區間中的任意一個都可以

? ? ? ? ? ? ? [a-d[m-p]]:a到d或者m到p

? ? ? ? ? ? ? [a-z&&[def]]:a到z和def的交集。

? ? ? ? ? ? ? [a-z&&[^bc]]:a到z和非bc的交集

? ? ? ? ? ? ? [a-z&&[^m-p]]:a到z和非m到p的交集

預定義字符(只能匹配一個字符):.? ? ?任何的一個字符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \d? ?一個數字:[0-9]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \D? ?非數字:[^0-9]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \s? ? 一個空白字符:[\t\n\x0B\f\r]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \S? ?非空白字符:[^\s]

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??\w? ?[a-zA-Z_0-9]英文、數字、下劃線

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \W? ?[^\w]一個非單詞字符

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (?i)? ?忽略大小寫

注意:\是轉義字符,所以在java中,兩個\(\\)表示一個\。(借鑒如上的例子)

數量詞:X?? ? ?X,一次或0次

? ? ? ? ? ? ? X*? ? ? X,零次或多次

? ? ? ? ? ? ? X+? ? ? X,一次或多次

? ? ? ? ? ? ? X{n}? ? X,正好n次

? ? ? ? ? ? ? X{n,}? ?X,至少n次

? ? ? ? ? ? ? X{n,m}? X,至少n次但不超過m次

爬蟲

本地爬蟲

網絡爬蟲

URL后面的網址,是你想要爬取的網址。?

有條件的爬取

貪婪爬取與非貪婪爬取

如果我們在用數量詞獲取數據時,它表示的次數不精確,那么我們到底獲取的是多少次呢?這就涉及到了貪婪爬取與非貪婪爬取。

貪婪爬取:在爬取數據時盡可能多的獲取數據。(java默認)

非貪婪爬取:在爬取數據時盡可能少的獲取數據。

Java中,默認的是貪婪爬取;如果我們在數量詞+ *的后面加上問號,那么此時就是非貪婪爬取

正則表達式在字符串方法中的使用

這里說幾個常用的,因為有很多,大家可以在API文檔中查閱。

public String[] matches(String regex):判斷字符串是否滿足正則表達式的規則

public String replaceAll(String regex,String newStr):按照正則表達式的規則進行替換。

public String[] split(String regex):按照正則表達式的規則切割字符串。

分組?

每組是有組號的,也就是序號。

規則1:從1開始,連續不間斷。

規則2:以左括號為基準,最左邊的是第一組,其次為第二組,以此類推。

?捕獲分組

正則內部使用:\\組號

正則外部使用:$組號

非捕獲分組

(?:正則):獲取所有

(?=正則):獲取前面部分

(?!正則):獲取不是指定內容的前面部分

注意:這里的括號不占用分組。

如果String regex = "[1-9](?:\\d)\\1";這里后面的\\1會報錯,因為他不知道哪里是第一組,這個表達式沒有分組。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89516.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89516.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89516.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【后端】.NET Core API框架搭建(8) --配置使用RabbitMQ

目錄 1.添加包 2. 連接配置 2.1.連接字符串 2.2.連接對象 3.創建連接服務 3.1.添加配置獲取方法 3.2.服務實現類 3.3.服務接口 4.創建生產者服務 4.1.生產者實現類 4.2.生產者接口 5.創建消費者服務 5.1.消費者服務接口 5.2.消費者接口 6.注冊 7.簡單使用案例 7.1.實現…

Apache SeaTunnel配置使用案例

前置操作 Apache SeaTunnel詳解與部署(最新版本2.3.11)-CSDN博客 mkdir /usr/local/soft/apache-seatunnel-2.3.11/job/ 一、MySQL to HDFS 官方配置參考: MySQL | Apache SeaTunnel Hdfs文件 | Apache SeaTunnel 1、配置確認 將mysq…

GitCode 使用高頻問題及解決方案

GitCode 作為一款強大的版本控制系統,在軟件開發流程中起著舉足輕重的作用。然而,在使用過程中,開發者們常常會遇到各種各樣的問題。本文將匯總 GitCode 使用中的高頻問題,并提供詳細的解決方案,幫助開發者們更順暢地使…

在FreeBSD系統使用chroot進入Ubuntu仿真環境使用Localsend軟件發送和接受文件

LocalSend是一款非常實用的在不同系統(Windows、MacOS、Linux、Android和IOS)傳遞文件的程序。我們這次的實踐,就是要在FreeBSD下也能發送和接收文件。 安裝LocalSend 跟在Ubuntu下安裝非常類似,只是不需要下面的第一步&#xf…

交叉熵損失F.cross_entropy在分類模型中的應用

一、核心思想:通過概率分布懲罰錯誤交叉熵損失的本質是: 比較模型預測的概率分布 vs 真實標簽的概率分布,懲罰兩者之間的差異。例如:真實標簽:圖像 0 → 文本 0(獨熱編碼 [1, 0, 0, ...])模型預…

測試學習之——Pytest Day3

引言Pytest 作為 Python 中最受歡迎的測試框架之一,以其簡潔的語法、強大的功能和豐富的插件生態系統,極大地提升了自動化測試的效率和可維護性。在本文中,我們將深入探討 Pytest 的兩大核心特性:Fixture 和插件管理,幫…

控制Vue對話框顯示隱藏

正確做法 — 使用 Vue 數據驅動控制顯隱你不需要手動設置 display: block&#xff0c;因為 Element Plus 的 <el-dialog> 是基于 v-model 或 :visible.sync 控制的。&#x1f527; 修改模板部分&#xff1a;將原來的&#xff1a;<el-dialog title"報文詳情"…

直播帶貨與開源AI智能名片鏈動2+1模式S2B2C商城小程序:重塑電商營銷新格局

摘要&#xff1a;本文聚焦于直播帶貨對互聯網供需關系的深刻影響&#xff0c;分析其如何改變傳統電商營銷模式&#xff0c;實現從“人找貨”到“貨找人”的轉變。同時&#xff0c;引入開源AI智能名片鏈動21模式S2B2C商城小程序這一創新概念&#xff0c;探討其在直播帶貨背景下的…

Jmeter 性能測試響應時間過長怎么辦?

當 JMeter 性能測試中出現 響應時間過長 的問題時&#xff0c;需要從 測試腳本、服務器、網絡、JMeter配置 等多方面排查和優化。以下是詳細的解決步驟和思路&#xff1a; B站最新性能進階&#xff0c;學會這些jmeter性能測試技能&#xff0c;更助于正確設計、執行和分析性能測…

COZE官方文檔基礎知識解讀第三期 —— prompt(提示詞)

COZE官方文檔基礎知識解讀第三期 —— prompt&#xff08;提示詞&#xff09; 對于初步接觸PE&#xff08;prompt engineering&#xff09; 的小伙伴們&#xff0c;你們可以去火山方舟提供的prompt工具&#xff0c;用工具&#xff08;其余的prompt網站https://www.promptinggu…

代碼隨想錄算法訓練營第三十二天|動態規劃理論基礎、LeetCode 509. 斐波那契數、70. 爬樓梯、746. 使用最小花費爬樓梯

目錄 LeetCode 509. 斐波那契數 70. 爬樓梯 746. 使用最小花費爬樓梯 感想 文檔講解&#xff1a;代碼隨想錄 動態規劃&#xff0c;英文&#xff1a;Dynamic Programming&#xff0c;簡稱DP&#xff0c;如果某一問題有很多重疊子問題&#xff0c;使用動態規劃是最有效的。 …

SpringMVC3

一、JSON 與參數傳遞1.1JSON 是什么- JSON 是字符串&#xff1a;比如 {"name":"zhangsan","password":"123456","age":15} 就是一個 JSON 字符串&#xff0c;它用來在前后端、服務間傳遞數據。- JSON 庫&#xff1a;Fastj…

查看.bin二進制文件的方式(HxD十六進制編輯器的安裝)

文章目錄Windows 系統上安裝 HxD 十六進制編輯器的步驟。**HxD 是一款免費、輕量級的工具&#xff0c;適合查看和編輯 .bin 等二進制文件。****PS:實際安裝過程中會發現找不到Windows11的版本&#xff0c;安裝windows10的即可&#xff0c;并且沒有區別setup版和portable版**安裝…

Linux系統性能優化與監控

系統性能優化與監控是保障 Linux 服務器穩定運行的核心技術&#xff0c;涉及 ??CPU、內存、磁盤 I/O、網絡、進程?? 等多維度的指標分析、問題定位與優化策略。以下從??監控工具與指標??、??常見問題診斷??、??優化方法??三個層面詳細講解&#xff0c;并結合?…

如何在 React + TypeScript 中實現 JSON 格式化功能

如何在 React TypeScript 中實現 JSON 格式化功能 作為前端開發者&#xff0c;我們經常需要處理 JSON 數據。無論是 API 調試、配置文件編輯還是數據轉換&#xff0c;能夠格式化 JSON 是一項基本但非常有用的技能。本文將詳細介紹如何在 React 和 TypeScript 環境中實現 JSON…

Mac連接服務器Docker容器全攻略

蘋果電腦( macOS 系統 )連接服務器、配置容器,整體思路和 Linux 終端操作更貼近,以下結合 macOS 特點,詳細分步說明,以 Docker 容器 + 常見 Linux 服務器( 如 CentOS、Ubuntu )為例: 一、連接服務器(SSH 方式, macOS 終端原生支持 ) 1. 準備信息 找運維或云平臺…

【字節跳動】數據挖掘面試題0019:帶貨直播間推薦:現在有一個帶貨的直播間,怎么把它精準地推送給有需要的用戶

文章大綱 帶貨直播間推薦系統:原理、算法與實踐 一、推薦系統在帶貨直播中的重要性 二、數據收集與處理 1. 用戶數據 2. 直播間數據 3. 用戶行為數據 4. 數據處理與特征工程 三、推薦算法實現 1. 基于內容的推薦 2. 基于協同過濾的推薦 3. 基于知識圖譜的推薦 4. 混合推薦算法…

Windows10筆記本電腦開啟BIOS

文章目錄什么是BIOS一、方案一&#xff1a;快捷鍵進入二、方案二&#xff08;推薦&#xff09;各品牌快捷鍵大全什么是BIOS BIOS 全拼為 BasicInputOutputSystem, 即基本輸入/輸出系統,是計算機中非常基礎而且重要的程序。把這一段程序存放在一個不需要電源的記憶體(芯片)中,就…

NFS、iSCSI 和lnmp部署操作

目錄 &#xff08;一&#xff09;基礎配置 1.NFS服務安裝 2.修改配置文件 3.重載配置文件 4.查看共享目錄 5.客戶端掛載 6.更換共享目錄 7.基礎實驗 &#xff08;二&#xff09;布置lnmp平臺 1.php 安裝軟件 檢測 2.連接MySQL 測試 3.軟件實施 軟件安裝配置 &…

Redis深度解析:從緩存原理到高并發實戰

第一部分&#xff1a;Redis核心概念與架構設計1.1 Redis本質解析Redis&#xff08;Remote Dictionary Server&#xff09;作為開源的內存數據結構存儲系統&#xff0c;其核心價值在于&#xff1a;內存優先架構&#xff1a;數據主要存儲在內存中&#xff0c;讀寫性能達到10萬 QP…