使用Java實現網絡爬蟲

網絡爬蟲java

網絡爬蟲(又被稱爲網頁蜘蛛,網絡機器人,在FOAF社區中間,更常常的稱爲網頁追逐者),是一種按照必定的規則,自動地抓取萬維網信息的程序或者腳本。算法

另一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲網絡蜘蛛是經過網頁的連接地址來尋找網頁,從網站某一個頁面(一般是首頁)開始,讀取服務器

網頁的內容,找到在網頁中的其它連接地址,而後經過這些連接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站全部的網頁都抓取完爲止。若是把整網絡

個互聯網當成一個網站,那麼網絡蜘蛛就能夠用這個原理把互聯網上全部的網頁都抓取下來。因此要想抓取網絡上的數據,不只須要爬蟲程序還須要一個能夠接ide

受」爬蟲「發回的數據並進行處理過濾的服務器,爬蟲抓取的數據量越大,對服務器的性能要求則越高。性能

1 聚焦爬蟲工做原理以及關鍵技術概述網站

網絡爬蟲是一個自動提取網頁的程序,它爲搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,得到初始網頁上搜索引擎

的URL,在抓取網頁的過程當中,不斷從當前頁面上抽取新的URL放入隊列,直到知足系統的必定中止條件。聚焦爬蟲的工做流程較爲複雜,須要根據必定的網頁分析url

算法過濾與主題無關的連接,保留有用的連接並將其放入等待抓取的URL隊列。而後,它將根據必定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重覆上idea

述過程,直到達到系統的某一條件時中止。另外,全部被爬蟲抓取的網頁將會被系統存貯,進行必定的分析、過濾,並創建索引,以便以後的查詢和檢索;對於聚

焦爬蟲來講,這一過程所獲得的分析結果還可能對之後的抓取過程給出反饋和指導。

相對於通用網絡爬蟲,聚焦爬蟲還須要解決三個主要問題:

(1) 對抓取目標的描述或定義;

(2) 對網頁或數據的分析與過濾;

(3) 對URL的搜索策略

分類

網絡爬蟲按照系統結構和實現技術,大體能夠分爲如下幾種類型:通用網絡爬蟲(General Purpose Web Crawler)、聚焦網絡爬蟲(Focused Web Crawler)、

增量式網絡爬蟲(Incremental Web Crawler)、深層網絡爬蟲(Deep Web Crawler)。 實際的網絡爬蟲系統一般是幾種爬蟲技術相結合實現的。

網絡爬蟲的實現原理

根據這種原理,寫一個簡單的網絡爬蟲程序 ,該程序實現的功能是獲取網站發回的數據,並提取之中的網址,獲取的網址咱們存放在一個文件夾中,關於如何就從網

站獲取的網址進一步循環下去獲取數據並提取其中其餘數據這裏就不在寫了,只是模擬最簡單的一個原理則能夠,實際的網站爬蟲遠比這裏複雜多,深刻討論就太多

了。除了提取網址,咱們還能夠提取其餘各類咱們想要的信息,只要修改過濾數據的表達式則能夠。如下是利用Java模擬的一個程序,提取新浪頁面上的連接,存放

在一個文件裏

源代碼以下

package com.cellstrain.icell.util;

import java.io.*;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* java實現爬蟲
*/
public class Robot {
public static void main(String[] args) {
URL url = null;
URLConnection urlconn = null;
BufferedReader br = null;
PrintWriter pw = null;
// String regex = "http://[\\w+\\.?/?]+\\.[A-Za-z]+";
String regex = "https://[\\w+\\.?/?]+\\.[A-Za-z]+";//url匹配規則
Pattern p = Pattern.compile(regex);
try {
url = new URL("https://www.rndsystems.com/cn");//爬取的網址、這裏爬取的是一個生物網站
urlconn = url.openConnection();
pw = new PrintWriter(new FileWriter("D:/SiteURL.txt"), true);//將爬取到的連接放到D盤的SiteURL文件中
br = new BufferedReader(new InputStreamReader(
urlconn.getInputStream()));
String buf = null;
while ((buf = br.readLine()) != null) {
Matcher buf_m = p.matcher(buf);
while (buf_m.find()) {
pw.println(buf_m.group());
}
}
System.out.println("爬取成功^_^");
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
pw.close();
}
}
}

在idea的運行結果以下:

看一下D盤有沒有SiteURL.txt文件

已經成功生成SiteURL文件,打開能夠看到裏面都是抓取到的url

以上就是一個簡單的java爬取網站的url實例,但願可以幫到你哦

 

詳細介紹請查看全文1:https://cnblogs.com/qzf/
詳細介紹請查看全文2:https://cnblogs.com/qian/

 

 

 

相關文章
相關標籤/搜索