python - 爬虫获取所有数据的思路是什么
ringa_lee
ringa_lee 2017-04-18 10:19:45
0
6
639

比如一个网站有下一页,我要怎么能把所有下一页爬完呢,用递归吗,递归深度不会有限制吗,初学,希望得到指点

ringa_lee
ringa_lee

ringa_lee

membalas semua(6)
大家讲道理

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

阿神

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!

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan