日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码

發布時間:2025/3/11 java 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原創 野狗菌 希望你能喜歡 今天

關于本文:

本文介紹一個簡單Java爬蟲,獲取網頁源碼,爬取電話號碼。

本篇教程用我的博客一個測試網頁演示。

——野狗菌【希望你能喜歡】

測試頁面:

https://www.wayteam.xyz/archives/phonenumber

源代碼:(注釋寫的很詳細了,太艱難,就直接放代碼,不做多解釋了)

import java.io.*;

import java.net.URL;

import java.net.URLConnection;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

?

/**

* @author 野狗菌

* 2020-04-06

* 爬蟲入門(一):獲取網頁源代碼,爬取手機號碼

* 微信公眾號:希望你能喜歡 (也可以搜索 foryouway )

* 個人網站:www.wayteam.xyz

*/

public class GetPhoneNumber {

?

public static void main(String[] args) throws Exception {

?

?

?

//創建一個要訪問的url

URL url = new URL("https://www.wayteam.xyz/archives/phonenumber");//這里以我的博客測試頁面為例

?

System.out.println("正在獲取"+url+"網站的手機號碼中-----請稍等");//無關緊要的代碼,只是為了友好的提示

?

//打開上面獲取的鏈接

URLConnection urlConnection = url.openConnection(); //新手提醒:這個會拋出異常,我為了方便,全部拋出去,不作處理throws Exception

?

//創建一個指定的存儲文件

File file = new File("phone.txt"); //這里是相對路徑,表示存在這個同級目錄下

//創建一個字符輸出流(從本程序輸出到phone.txt文件)

PrintWriter printWriter = new PrintWriter(file);//程序執行到這里就會在對應位置創建對應文件了

?

//創建一個輸入流(這個輸入輸出是以本程序為參照)

InputStream inputStream = urlConnection.getInputStream();

?

//把上面的字節流轉化為字符流

InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

?

//把字符流轉化為字符緩沖流

BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

?

//創建一個空的字符串來接收從字符緩沖流里接收的數據

String htmlLine = null;

?

//手機號碼的正則表達式,用來匹配數據中的手機號碼

String regex = "1[35789]\\d{9}";//1:第一位是1,[35789]:第二位是35789中的一個,\d{9}:剩余9位數任意(因為java中\需要轉義,所以這里用\\)。

Pattern pattern = Pattern.compile(regex);//把正則表達式編譯成模式。

?

//用while遍歷上面的到的字緩沖流,把值給上面的空字符串(readLine是一行一行讀取網頁源代碼的)

while ((htmlLine = bufferedReader.readLine()) != null){ //當字符流緩沖流沒有為空時,一直讀取它。

?

//創建一個匹配器來匹配上面的正則表達式模式

Matcher matcher = pattern.matcher(htmlLine);

?

//循環匹配

while (matcher.find()){ //當匹配成功時,往下執行

printWriter.println(matcher.group());//將匹配的數據用group轉化為字符串,寫進字符輸出流中

}

?

?

?

?

/**

* 在控制臺打印htmlLine,觀察它是什么樣的數據

* 為了方便大家理解readLine執行過程,給進程設置一個休眠時間,不然數據嘩啦一下直接出來

* 這里我錄制了一個動圖,大家也可以自己試試。

*/

/*System.out.println(htmlLine);

Thread.sleep(100);//100毫秒*/

?

?

}

?

/**

* 關閉這兩個流

*/

bufferedReader.close();

printWriter.close();

?

System.out.println("獲取號碼成功,快去"+file+"查看結果吧"+"\n"+"-------by野狗菌\uD83D\uDC36");//無關緊要的代碼,只是為了友好的提示

}

?

}

一個演示:

結果展示:

問題:為什么這里獲取的手機號碼比我網頁里面寫的要多?

因為這些數據被我的匹配器匹配成號碼了。。。。

后面會介紹其他抓取方式,可以避免這個問題。

** **

** **

** **

在公眾號內發送【07】,即可獲取源碼(你也可以直接自己創建項目,把上面內容寫進去)。

總結

以上是生活随笔為你收集整理的java爬虫自动识别验证码_简单Java爬虫(一)爬取手机号码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。