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:
Tidak stabil, 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, kecepatannya lebih lambat; daripada membaca data di server lokal.
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.google di bawah ini
Redupkan Url,Html
Url=http://www.google;
Html = dapatkanHTTPHalaman(Url)
Respon.tulis Html
%>
2. Beberapa fungsi yang umum digunakan
fungsi InStr
Deskripsi Mengembalikan posisi di mana karakter tertentu (string2) pertama kali muncul di string lain (string1).
SintaksInStr(string1, string2)
Misalnya:
Redupkan SearchString, SearchChar
SearchString =http://www.google ' String yang akan dicari.
SearchChar = blue1000 'Cari blue1000.
MyBK = Instr(SearchString, SearchChar) ' Kembali 8
'Kembalikan 0 jika tidak ditemukan, misalnya:
PencarianChar = BK
MyBK = Instr(SearchString, SearchChar) ' Kembali 0
Fungsi tengah
Deskripsi: Mengembalikan jumlah karakter tertentu dari sebuah string.
SyntaxMid(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
Ganti fungsi
Redupkan SearchString, SearchChar
SearchString = Desain BK kami adalah string situs web sumber daya bangunan yang akan dicari di dalamnya.
SearchString =Replace(SearchString, desain BK, Www.google)'Saat ini, nilai SearchString menjadi milik kami Www.google adalah situs web sumber daya konstruksi situs web
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>BK (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 quote, karena tanda kutip ganda merupakan 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 akan diperoleh RsBK=mid(StrBK,start, memulai secara berlebihan). 'Fungsinya disini adalah untuk mengekstrak string antara karakter awal dan karakter over di StrBK. Fungsi mid juga sudah saya bahas di bagian sebelumnya; over-start adalah untuk menghitung jarak antara posisi awal dan jarak 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 anda peroleh adalah: <td id=Content>BK (www.google) Mesin pencari Google adalah situs dengan banyak resource...
Apakah kamu melihatnya? Ada kode HTML yang tidak lengkap! Apa yang harus dilakukan? Pernyataan start=Instr(StrBK,<td id=Content>) memperoleh konten <td id=Content> di
Nomor posisi di StrBK, sekarang kita bisa menambahkan 17 setelah pernyataan program, kemudian program akan mengarahkan posisinya ke karakter setelah <td id=Content>.
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 kenyataannya, fungsi ganti mungkin tidak cocok untuk beberapa situasi, misalnya kita ingin mengganti semua koneksi dalam string tertentu Hapus . Koneksi dapat mencakup banyak tipe, dan replace hanya dapat menggantikan salah satu dari tipe tersebut, bukan?