Apakah Anda ingin menggunakan ASP untuk membuat program pengumpul pencuri favorit Anda? Setelah membaca artikel berikut, Anda bisa membuatnya sendiri. prinsip
Program pengumpulan sebenarnya memanggil halaman web di situs lain melalui komponen XMLHTTP dalam XML. Misalnya, banyak program pengumpulan berita menyebut halaman web berita Sina, dan beberapa HTML di dalamnya diganti, dan iklan juga disaring. Keuntungan menggunakan program pengumpulan adalah: tidak perlu melakukan pemeliharaan website, karena data dalam program pengumpulan berasal dari situs lain, dan akan diperbarui seiring dengan pembaruan situs web; program pengumpulan hanya memiliki sedikit file, dan semua konten web berasal dari situs web lain. Kerugiannya adalah: ketidakstabilan, jika situs web target salah, program juga akan salah, dan jika situs web target ditingkatkan dan dipelihara, program pengumpulan juga perlu diubah kecepatannya, karena ini adalah panggilan jarak jauh, yaitu kecepatannya secepat membaca data di server lokal Sudah pasti lebih lambat dari itu.
1. Kasus
Berikut penjelasan singkat penerapan XMLHTTP di ASP.
Copy kode kodenya sebagai berikut:
<%
'Fungsi yang umum digunakan
'1. Masukkan alamat halaman web target url, dan nilai kembalian getHTTPage adalah kode html halaman web target.
fungsi getHTTPage(url)
redupHttp
atur Http=server.buat objek(MSXML2.XMLHTTP)
Http.buka GET,url,false
Http.kirim()
jika Http.readystate<>4 maka
fungsi keluar
berakhir jika
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
atur http=tidak ada
jika err.number<>0 maka err.Clear
fungsi akhir
'2. Konversi Ranma. Langsung gunakan xmlhttp untuk memanggil halaman web dengan karakter Cina. Yang Anda dapatkan adalah Ranma.
Fungsi BytesToBstr(tubuh)
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 = GB2312 'Konversi pengkodean UTF-8 default asli ke pengkodean GB2312. Jika tidak, menggunakan komponen XMLHTTP secara langsung untuk memanggil halaman web dengan karakter Cina akan menghasilkan kode yang kacau.
BytesToBstr = objstream.ReadText
objstream.Tutup
setel objstream = tidak ada
Fungsi Akhir
'Coba panggil konten html http://www.vevb.com
Redupkan Url,Html
Url=http://www.vevb.com;
Html = dapatkanHTTPHalaman(Url)
Respon.tulis Html
%>
2. Beberapa fungsi yang umum digunakan
(1) Fungsi InStr
menggambarkan
Mengembalikan posisi di mana karakter tertentu (string2) muncul pertama kali di string lain (string1).
tata bahasa
InStr(string1, string2)
Misalnya:
Redupkan SearchString, SearchChar
SearchString =http://www.vevb.com ' String yang akan dicari.
SearchChar = jb51 'Cari jb51.
MyBK = Instr(SearchString, SearchChar) ' Kembali 8
'Kembalikan 0 jika tidak ditemukan, misalnya:
PencarianChar = BK
MyBK = Instr(SearchString, SearchChar) ' Kembali 0
(2) Fungsi tengah
menggambarkan
Mengembalikan jumlah karakter yang ditentukan dari sebuah string.
tata bahasa
Pertengahan (string, mulai, selesai)
Misalnya:
Redupkan MyBK
MyBK = Pertengahan (desain BK (www.google) kami, 7, 12) 'Mencegat string 12 karakter setelah karakter ke-7 desain BK (www.google) kami
'Saat ini nilai MyBK menjadi www.google
(3) Ganti fungsi
Redupkan SearchString, SearchChar
SearchString = Desain BK kami adalah string situs web sumber daya bangunan yang akan dicari di dalamnya.
SearchString =Ganti(SearchString,desain BK,Www.google)
'Saat ini nilai SearchString menjadi Www.google kami adalah situs web sumber daya konstruksi
3. Cegat kode HTML dari area yang ditentukan
Misalnya, saya hanya ingin mendapatkan bagian teks antara <td> dan </td> dalam kode HTML berikut:
<html>
<title>(www.google)Mesin pencari Google</title>
<tubuh>
<tabel>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) Mesin pencari Google adalah situs dengan banyak sumber daya...</td></tr>
</tabel>
</tubuh>
</html>
<%
…
Redupkan StrBK, mulai, ulang, RsBK
StrBK=getHTTPage (alamat halaman web)
start=Instr(StrBK,<td id=Content>) 'Fungsinya disini adalah untuk mendapatkan posisi awal string. Ada yang akan bertanya di sini: kode aslinya adalah <td id=Content>, mengapa Anda memanggil <td id=Content> di sini? Jawaban: di asp (tepatnya diwakili oleh dua tanda kutip ganda di VBscript A double kutipan, karena tanda kutip ganda adalah karakter sensitif untuk program).
over=Instr(StrBK,…</td></tr>)'Fungsinya disini adalah untuk mendapatkan posisi akhir dari string.
'Akan ada yang bertanya lagi di sini :( : Mengapa ada tiga titik tambahan di depan kode HTML yang dipanggil program...? Jawaban: Tip: Ada juga </td></tr> di atas baris, jika Anda menggunakan </td></ tr> untuk mencari lokasi, program akan salah menganggap </td></tr> pada baris di atas sebagai akhir dari string yang ingin diperoleh.
RsBK=mid(StrBK,start,over-start) 'Fungsinya disini adalah untuk mengekstrak string antara karakter awal dan karakter over di StrBK. Fungsi mid juga telah saya bahas pada bagian sebelumnya; over-start adalah menghitung jarak antara posisi awal dan posisi akhir, yaitu jumlah karakter.
respon.write(RsBK) 'Akhirnya keluaran konten yang diperoleh program
%>
Jangan terlalu senang, ketika Anda menjalankannya, Anda akan menemukan ada kesalahan pada kode html halaman tersebut. Karena kode html yang didapat adalah:
<td id=Content>BK (www.google) Mesin pencari Google adalah situs dengan banyak sumber...
Apakah kamu melihatnya? Ada kode HTML yang tidak lengkap! Apa yang harus dilakukan? Pernyataan start=Instr(StrBK,<td id=Content>) memperoleh nomor posisi <td id=Content> di StrBK. Sekarang kita dapat menambahkan 17 setelah pernyataan program, kemudian program akan menunjuk ke posisi karakter setelahnya <td id=Isi>.
Oke, programnya akan berubah menjadi ini:
<%
…
Redupkan StrBK, mulai, ulang, RsBK
StrBK=getHTTPage (alamat halaman web)
mulai=Instr(StrBK,<td id=Isi>) + 17
over=Instr(StrBK,…</td></tr>) 'Di sini Anda juga dapat mengurangi tujuh (-7) untuk menghilangkan 3 poin
RsBK=pertengahan(StrBK,mulai,mulai dari awal)
respon.tulis(RsBK)
%>
Tidak apa-apa, kita bisa mencuri apa yang kita inginkan dan menampilkannya di halaman kita sendiri, haha~
4. Hapus atau ubah karakter yang diperoleh
Ganti BK(www.google) di RsBK dengan BK:
RsBK=ganti(RsBK,BK(www.google),BK)
Atau hapus (www.google) secara langsung:
RsBK=ganti(RsBK,(www.google),)
Oke, sekarang RsBK menjadi: BK Mesin pencari Google adalah situs dengan banyak sumber daya...
Namun pada kenyataannya, fungsi replace mungkin tidak cocok untuk beberapa situasi. Misalnya, kita ingin menghapus semua koneksi dalam string tertentu. Koneksi dapat mencakup banyak tipe, dan replace hanya dapat menggantikan salah satu darinya Fungsi ganti lain yang sesuai untuk menggantikannya?
Namun Anda bisa menggunakan ekspresi reguler untuk melakukan pekerjaan ini. Saya tidak akan menjelaskan secara detail di sini.
(1) Bagaimana proses pengubahan halaman website pihak lain menjadi milik kita?
Jawabannya adalah: gunakan fungsi ganti dan penerusan parameter halaman.
Misalnya, halaman pihak lain berisi kode pembalikan halaman berikut: <a href=2.htm>Halaman berikutnya</a>. Pertama-tama kita dapat menggunakan konten yang disebutkan di atas untuk mendapatkan string ini, lalu menggunakan fungsi ganti: RsBK= ganti( RsBK,<a href=,<a href=page.asp?Url=)
Kemudian dapatkan nilai parameter Url di program page.asp, dan terakhir gunakan teknologi pengumpulan untuk mendapatkan konten yang Anda inginkan di halaman berikutnya.
(2) Bagaimana cara menyimpan konten yang diperoleh ke dalam database
Karena keterbatasan tempat, saya akan menyebutkannya secara singkat di sini.
Ini sebenarnya sangat sederhana:
Memproses konten yang dicuri untuk mencegah kesalahan injeksi SQL saat menulis ke database, misalnya: replace(String,','')
Kemudian jalankan perintah sql untuk memasukkan ke dalam database dan semuanya akan baik-baik saja~
Di atas hanyalah beberapa aplikasi dasar dari komponen XMLHTTP. Faktanya, komponen ini juga dapat mengimplementasikan banyak fungsi, seperti menyimpan gambar jarak jauh ke server lokal, dan menggunakan komponen adodb.stream untuk menyimpan data yang diperoleh ke dalam database. Koleksi mempunyai berbagai macam fungsi dan kegunaan.