Jika semua data yang anda rujuk adalah semua data di bawah nama domain yang kecil, dan anda tidak mahu mengkaji prinsip secara terperinci, maka pelajari dengan teliti.
Jika semua data yang anda rujuk ialah keseluruhan data rangkaian dan anda ingin memahami sama ada merangkak adalah mengutamakan keluasan atau kedalaman, dsb., maka anda mesti mempunyai 10,000+ pelayan terlebih dahulu.
Jika struktur tapak web adalah mudah dan berulang, anda boleh menganalisis corak URL nombor halaman dahulu, kemudian dapatkan jumlah halaman terus dari halaman pertama, dan kemudian bina URL halaman lain secara manual.
Pertama sekali, mari kita bincangkan secara ringkas tentang idea merangkak Jika pautan halaman adalah sangat mudah, seperti www.xxx.com/post/1.html, anda boleh menulis rekursi atau gelung untuk merangkak
Jika pautan halaman tidak diketahui, anda boleh mendapatkan halaman yang dirangkak untuk menghuraikan pautan teg, dan kemudian teruskan merangkak dalam proses ini, anda perlu menyimpan pautan yang dirangkak semasa merangkak pautan baharu merangkak sebelum ini, dan kemudian merangkak secara rekursif
Merangkak idea: Merangkak melalui url-> Menghuraikan url baharu dalam kandungan yang dirangkak->....-> rekursi apabila membuat pautan baharu
Akhir sekali, terdapat rangka kerja perangkak yang sangat berkuasa dalam dunia ular sawa ia pada dasarnya merangkumi semua rutin perangkak biasa Anda boleh menguasai portal dengan sedikit pembelajaran
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.io.FileUtils;
public class SpiderDemo {
public static void main(String[] args) throws IOException {
// URL url = new URL("http://www.zhongguoxinyongheimingdan.com");
// URLConnection connection = url.openConnection();
// InputStream in = connection.getInputStream();
// File file = new File("F://a.txt");
// FileUtils.copyInputStreamToFile(in, file);
File srcDir = new File("F://a.txt");
String str = FileUtils.readFileToString(srcDir, "UTF-8");
String[] str1 = str.split("href=");
for (int i = 3; i < str1.length-1; i++) {
URL url = new URL("http://www.zhongguoxinyongheimingdan.com"+str1[i].substring(1, 27));
File f = new File("F://abc//"+str1[i].substring(2, 22));
if(!f.exists()){
f.mkdir();
File desc1 = new File(f,str1[i].substring(1, 22)+".txt");
URLConnection connection = url.openConnection();
InputStream in = connection.getInputStream();
FileUtils.copyInputStreamToFile(in, desc1);
String str2 = FileUtils.readFileToString(desc1, "UTF-8");
String[] str3 = str2.split("\" src=\"");
for(int j = 1;j<str3.length-2;j++){
URL url1 = new URL(str3[j].substring(0, 81));
URLConnection connection1 = url1.openConnection();
connection1.setDoInput(true);
InputStream in1 = connection1.getInputStream();
File desc2 = new File(f,str3[j].substring(44,76)+".jpg");
FileUtils.copyInputStreamToFile(in1, desc2);
}
}
}
}
}
Kod mudah untuk menyimpan semua foto dari laman web senarai hitam kredit China ke tempatan Laman web itu sendiri adalah mudah! Tetapi laman web itu ranap di tempat kejadian dan saya mabuk!
Rekursi, baris gilir mesej, penyimpanan halaman yang dirangkak (redis, pangkalan data)
Jika semua data yang anda rujuk adalah semua data di bawah nama domain yang kecil, dan anda tidak mahu mengkaji prinsip secara terperinci, maka pelajari dengan teliti.
Jika semua data yang anda rujuk ialah keseluruhan data rangkaian dan anda ingin memahami sama ada merangkak adalah mengutamakan keluasan atau kedalaman, dsb., maka anda mesti mempunyai 10,000+ pelayan terlebih dahulu.
Jika tapak web yang sama, gunakan rekursi untuk merangkaknya Mengapakah tapak web yang sama tidak boleh dirangkak hingga akhir?
Jika struktur tapak web adalah mudah dan berulang, anda boleh menganalisis corak URL nombor halaman dahulu, kemudian dapatkan jumlah halaman terus dari halaman pertama, dan kemudian bina URL halaman lain secara manual.
Pertama sekali, mari kita bincangkan secara ringkas tentang idea merangkak Jika pautan halaman adalah sangat mudah, seperti www.xxx.com/post/1.html, anda boleh menulis rekursi atau gelung untuk merangkak
Jika pautan halaman tidak diketahui, anda boleh mendapatkan halaman yang dirangkak untuk menghuraikan pautan teg, dan kemudian teruskan merangkak dalam proses ini, anda perlu menyimpan pautan yang dirangkak semasa merangkak pautan baharu merangkak sebelum ini, dan kemudian merangkak secara rekursif
Merangkak idea: Merangkak melalui url-> Menghuraikan url baharu dalam kandungan yang dirangkak->....-> rekursi apabila membuat pautan baharu
Akhir sekali, terdapat rangka kerja perangkak yang sangat berkuasa dalam dunia ular sawa ia pada dasarnya merangkumi semua rutin perangkak biasa Anda boleh menguasai portal dengan sedikit pembelajaran
Kod mudah untuk menyimpan semua foto dari laman web senarai hitam kredit China ke tempatan Laman web itu sendiri adalah mudah! Tetapi laman web itu ranap di tempat kejadian dan saya mabuk!