Saya telah mengembangkan beberapa program koleksi dan mempelajari banyak kode program koleksi, sehingga saya memiliki sedikit pemahaman tentang prinsip-prinsip program koleksi. Mari kita bahas prinsip pengumpulannya terlebih dahulu:
Langkah-langkah utama dari prosedur pengumpulan adalah sebagai berikut:
1. Dapatkan konten dari halaman yang dikumpulkan
2. Ekstrak semua data yang digunakan dari kode akuisisi
1. Dapatkan konten dari halaman yang dikumpulkan
Metode ASP yang umum digunakan yang saat ini saya ketahui untuk mendapatkan konten halaman yang dikumpulkan adalah:
1. Gunakan komponen serverXMLHTTP untuk mendapatkan data
Copy kode kodenya sebagai berikut:
Fungsi GetBody(weburl)
'Buat objek
Redupkan ObjXMLHTTP
Setel ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)
'File permintaan, dalam bentuk asinkron
ObjXMLHTTP.Buka GET,weburl,False
ObjXMLHTTP.kirim
Sedangkan ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
Pergi ke
'Dapatkan hasilnya
GetBody=ObjXMLHTTP.responseBody
'Lepaskan objek
Setel ObjXMLHTTP=Tidak Ada
Fungsi Akhir
Metode panggilan:
GetBody (alamat URL file)
2. Atau komponen XMLHTTP untuk memperoleh data
Copy kode kodenya sebagai berikut:
Fungsi GetBody(weburl)
'Buat objek
Setel Pengambilan = Buat Objek (Microsoft.XMLHTTP)
Dengan Pengambilan
.Buka Dapatkan, weburl, Salah, ,
.Mengirim
GetBody = .ResponseBody
Akhiri Dengan
'Lepaskan objek
Atur Pengambilan = Tidak Ada
Fungsi Akhir
Metode panggilan:
GetBody (alamat URL file)
Konten data yang diperoleh dengan cara ini masih perlu dikodekan dan dikonversi sebelum dapat digunakan.
Copy kode kodenya sebagai berikut:
Fungsi BytesToBstr(tubuh,Cset)
objekstream redup
setel objstream = Server.CreateObject(adodb.stream)
objstream.Jenis = 1
objstream.Mode =3
objstream.Buka
objstream.Tulis isi
objstream.Posisi = 0
objstream.Jenis = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Tutup
setel objstream = tidak ada
Fungsi Akhir
Metode panggilan: Pengkodean BytesToBstr (data yang akan dikonversi, pengkodean) biasanya digunakan sebagai GB2312 dan UTF-8
2. Ekstrak semua data yang digunakan dari kode akuisisi
Metode yang saya miliki saat ini adalah:
1. Gunakan fungsi MID bawaan ASP untuk mencegat data yang diperlukan
Copy kode kodenya sebagai berikut:
Badan fungsi (wstr, mulai, selesai)
mulai=String baru(wstr,mulai)
'Tetapkan tag awal unik dari data yang perlu diproses
over=String baru(wstr,over)
'Sesuai dengan awal adalah satu-satunya tag akhir dari data yang perlu diproses.
body=mid(wstr,start,over-start)
'Atur rentang halaman yang ditampilkan
Fungsi Akhir
Metode pemanggilan: isi (isi halaman yang dikumpulkan, tag awal, tag akhir)
2. Gunakan ekspresi reguler untuk mendapatkan data yang dibutuhkan
Copy kode kodenya sebagai berikut:
Badan fungsi (wstr, mulai, selesai)
Set xiaoqi = Objek konfigurasi Regexp baru
xiaoqi.IgnoreCase = Benar'Abaikan kasus
xiaoqi.Global = True' disetel ke pencarian teks lengkap
xiaoqi.Pattern = &start&.+?&over&'ekspresi reguler
Setel Kecocokan =xiaoqi.Execute(wstr)'Mulai mengeksekusi konfigurasi
atur xiaoqi=tidak ada
tubuh=
Untuk Setiap Pertandingan dalam Pertandingan
body=body&Match.Value 'Pencocokan loop
Berikutnya
Fungsi Akhir
Metode pemanggilan: isi (isi halaman yang dikumpulkan, tag awal, tag akhir)
Ide terperinci untuk prosedur pengumpulan:
1. Dapatkan alamat setiap halaman halaman daftar halaman situs web
Saat ini, sebagian besar situs web dinamis memiliki aturan untuk alamat paging, seperti:
halaman dinamis
Halaman pertama: index.asp?halaman=1
Halaman kedua: index.asp?halaman=2
Halaman ketiga: index.asp?page=3
.....
halaman statis
Halaman pertama: halaman_1.htm
Halaman kedua: halaman_2.htm
Halaman ketiga: halaman_3.htm
.....
Untuk mendapatkan alamat setiap halaman halaman daftar paging website, Anda hanya perlu menggunakan variabel untuk menggantikan karakter yang berubah-ubah pada setiap alamat halaman, seperti: page_<%=&page&%>.htm
2. Dapatkan konten halaman daftar paginasi dari situs web yang dikumpulkan
3. Ekstrak alamat koneksi URL halaman konten yang dikumpulkan dari kode daftar paging
Sebagian besar link halaman konten di halaman yang diberi nomor halaman juga memiliki aturan tetap, seperti:
<a href=url1>Koneksi 1</a> <br>
<a href=url2>Koneksi 2</a> <br>
<a href=url3>Koneksi 3</a> <br>
Gunakan kode berikut untuk mendapatkan kumpulan koneksi URL
Copy kode kodenya sebagai berikut:
Setel xiaoqi = Regexp Baru
xiaoqi.IgnoreCase = Benar
xiaoqi.Global = Benar
xiaoqi.Pola = .+?
Atur Kecocokan =xiaoqi.Execute(isi daftar halaman)
atur xiaoqi=tidak ada
url=
Untuk Setiap Pertandingan dalam Pertandingan
url=url&Match.Nilai
Berikutnya
4. Dapatkan konten dari halaman konten yang dikumpulkan, dan intersepsi data yang akan diperoleh dari halaman konten yang dikumpulkan sesuai dengan tanda ekstraksi.
Karena ini adalah halaman yang dibuat secara dinamis, sebagian besar halaman konten memiliki tag HTML yang sama. Kita dapat mengekstrak bagian konten yang diperlukan berdasarkan tag reguler ini.
menyukai:
Setiap halaman memiliki judul halaman web <title>Judul halaman web</title>. Anda dapat menggunakan fungsi intersepsi MID yang saya tulis di atas untuk mendapatkan nilai di antara <title></title>, atau Anda dapat menggunakan ekspresi reguler untuk mendapatkannya.
Contoh: body(<title>Judul halaman web</title>,<title>,</title>)