Ada banyak ide orang untuk memiliki mesin pencari kita sendiri, tetapi bagaimana kita bisa memiliki mesin pencari kita sendiri? Sekarang editor akan mengajari Anda cara menggunakan metode pengumpulan data populer saat ini untuk mengimplementasikan mesin pencari Anda sendiri. Sekarang mari kita lihat metode untuk membangun mesin pencari Anda sendiri.
1. Memahami pencarian Baidu
Baidu Search, mesin pencari Cina terbesar di dunia, terdaftar di NASDAQ di Amerika Serikat pada 5 Agustus 2005. Saat ini mesin pencari dengan tingkat penggunaan pengguna tertinggi di Cina, menyediakan berbagai pencarian seperti halaman web, berita, gambar, musik, peta, dll.
1. Parameter kueri untuk pencarian web Baidu
Parameter yang diperlukan
☆ WD-kata kunci untuk kueri (kata kunci)
☆ PN-jumlah halaman yang menunjukkan hasilnya (nomor pagen)
☆ CL-Tipe Penelitian (kelas), Cl = 3 adalah pencarian web
Parameter opsional
☆ RN-Jumlah hasil pencarian (RecordNumber), rentang nilai antara 10-100, pengaturan default adalah RN = 10
☆ IE-Query Pengkodean teks input (inputencoding), pengaturan default adalah IE = GB2312, yang disederhanakan Cina
☆ TN-Situs sumber untuk mengirimkan permintaan pencarian
Beberapa TN yang berguna
TN = Baidulocal berarti bahwa pencarian di situs Baidu, hasil yang dikembalikan sangat bersih dan tidak ada gangguan iklan. Misalnya, cari kebahagiaan di Baidu untuk melihat apakah hasilnya menyegarkan.
TN = Baiducnnic ingin menempatkan Baidu dalam kerangka itu? Coba saja parameter ini, itu disesuaikan oleh Baidu untuk CNNIC
☆ Penelusuran dalam Nama Domain Terbatas. Misalnya, jika Anda ingin mencari di situs web Sina, Anda dapat menggunakan parameter si = sina.com.cn. Untuk membuat parameter ini efektif, Anda harus menggunakannya bersama dengan parameter CT.
☆ CT-Nilai parameter ini umumnya merupakan string angka, yang diperkirakan menjadi kode verifikasi untuk permintaan pencarian.
Gunakan parameter SI dan CT dalam kombinasi, misalnya, mencari cita-cita di Sina.com.cn, tersedia: http://www.baidu.com/baidu?ie=utf-8&am...n&cl=3&word=ideal
☆ BS-Kata kunci dari pencarian terakhir (beforesearch), yang diperkirakan terkait dengan pencarian terkait.
2. Struktur Halaman Hasil Pencarian Baidu
Menurut struktur kode sumber, top-down adalah:
Kotak pencarian
Memperbaiki peringkat area panas di sebelah kanan
Hasil pencarian
Area pagination
Pencarian terkait
Kotak pencarian bawah
Area Hak Cipta
Hasil pencarian dan area pagination adalah data yang valid yang kita butuhkan. Menurut hasil kode, Anda dapat menemukan pengidentifikasi string uniknya. Cukup gunakan pengidentifikasi ini untuk mencegat konten. Untuk detailnya, lihat kode berikut.
2. Fungsi inti-komponen xmlhttp menggunakan ASP
Program pengumpulan data, umumnya dikenal sebagai Program Pencuri, adalah bagian inti dari komponen XMLHTTP ini. Agak kuno menggunakan XMLHTTP untuk mengumpulkan data, dan ada juga banyak informasi online. Umumnya, kode koleksi adalah
setthttp = server.CreateObject (msxml2.xmlhttp)
Http.openget, url, false'open xmlhttp
Http.send () 'Kirim permintaan
ifhttp.readystate <> 4then
fungsi keluar
endif
getHttppage = bytestoBstr (http.responseBody, gb2312) 'kembalikan hasilnya (biasanya aliran byte) dan ubah aliran byte menjadi string
setthttp = nothing'release xmlhttp
Lihat kode lengkap di bawah ini untuk aplikasi terperinci
3. Kode Lengkap (Nama File: Searchi_Bd.asp)
<%
OptionExplicit
Dimwd, pn
wd = request (wd)
pn = request.querystring (pn)
'Mulai penanganan kesalahan
OnerrorresumeNext
Iferr.number <> 0then
Respons.clear
'Tampilkan pesan kesalahan kepada pengguna
Ada kesalahan dalam respons. Write <palign = 'center'> <fontsize = 3>, silakan buka pencarian baidu lagi. </font> </p>
endif
%>
<Html>
<head>
<title> pencarian baidu-<%= wd%> </iteme>
</head>
<Styletype = text/css>
<!-
tubuh, td {font-family: Arial}
Td {font-size: 9pt; line-height: 18px}
.cred {color:#ff0000}
//->
</tyle>
<Bodyleftmargin = 0topmargin = 3marginwidth = 0marginheight = 0>
<tablealign = centerwidth = 98%cellpacing = 0cellpadding = 0border = 0bgcolor =#ffffff>
<tr>
<formname = f1method = postaction = searchi_bd.asp>
<tdwidth = 150Height = 50>
Logo Anda
</td>
<tdalign = left>
<inputName = wdSize = 40MaxLength = 100Title = Masukkan kata kunci, dan kemudian mari kita selesaikan ... value = <%= wd%>>
<inputType = submitValue = Baidu Search>
</td> </form> </tr>
</boable>
<%
Dimstrurl, strtmp_bd, strinfo, strpage, strpagesum_bd, strqtime_bd
Dimbnoresult_bd, regex, patn
'String kueri Baidu
strurl = http: //www.baidu.com/s? ie = gb2312 & wd = & wd & am ... & pn && cl = 3
'Mulailah koleksi
strtmp_bd = getHttppage (strurl)
Ifinstr (strtmp_bd, tidak ditemukan dan kueri Anda) <> 0then
bnoresult_bd = 1
Endif
'Mencegat konten bagian hasil pencarian
strinfo = strcut (strtmp_bd, <divid = scriptDiv> </div>, <brclear = all>, 2)
Patn = </td> </tr> </able> <br>
SetRegex = newregexp 'menciptakan ekspresi reguler.
Regex.pattern = Mode Patrn'Set.
Regex.ignorecase = true
regex.global = false
strinfo = regex.replace (strinfo,)
'Seave Isi Area Paging
strpage = strcut (strtmp_bd, <brclear = all>, <br>, 2)
strpage = ganti (strpage, href = s?, href = searchi_bd.asp?)
'Jumlah hasil dan waktu
strpagesum_bd = strcut (strtmp_bd, temukan halaman web yang relevan, artikel, 2)
IFNOTISNUMERIC (strpagesum_bd) lalu
strpagesum_bd = strcut (strtmp_bd, temukan halaman web yang relevan, artikel, 2)
endif
strqtime_bd = strcut (strtmp_bd, waktu, detik, 2)
Setstrtmp_bd = tidak ada
%>
<!-T1-start->
<TableCellPacing = 0CellPadding = 0Border = 0width = 98%Align = Center>
<trvalign = centerAlign = MiddleHeight = 18>
<tdwidth = 1bgcolor =#999999>
<tdnowrapStyle = font-weight: bold; color: #ffffff; latar belakang-warna:#0033ccwidth = 64> internet </td>
<tdaLign = rightbgcolor =#eeeeeeeee> <obr> temukan halaman web yang relevan yang cocok dengan <b> <%= wd%> </b> <b> <%= strpagesum_bd%> </b>, dan ambil <b> <%= strqTime_bd%> </b> </b> </tw> </td>
</tr>
<tr> <tdbgcolor =#999999colspan = 3Height = 2> </td> </tr> </boable>
</td>
</tr>
</boable>
<%
ifwd = lalu
Response.write <palign = 'center'> <fontsize = -1> halo, silakan masukkan kata kunci di kotak pencarian. </font> </p>
elseifbnoresult_bd = 1then
Response.write <palign = 'center'> <fontsize = -1> Maaf, tidak ada informasi yang memenuhi kondisi kueri Anda ditemukan. Harap pilih kembali kata kunci yang sesuai untuk permintaan. </font> </p>
kalau tidak
%>
<tableWidth = 98%align = centercellspace = 0cellpacing = 0cellpadding = 0border = 0>
<tr>
<tdstyle = garis-tinggi: 160%bgcolor =#ffffffwidth = 75%valign = top> <br>
<%= strinfo%>
</td>
<tdwidth = 25%valign = top> <br> Ini adalah ruang untuk Anda mainkan!
</td>
</tr>
</boable>
<tableWidth = 98%align = centercellspace = 0cellpacing = 0cellpadding = 4border = 0>
<tr>
<tdalign = center>
<br> <fontSize = 3> <%= strpage%> </font>
</td>
</tr>
</boable>
<%Endif
setStrinfo = tidak ada
%>
<hrsize = 1width = 760color =#0000ff>
<divalign = center> <fontSize = -1>
Silakan kunjungi <spanclass = cred> (forum berbagi pengetahuan) </span> untuk melihat </font>
</div>
</body>
</html>
<%
Koleksi fungsi
FunctionGetHttppage (URL)
OnerrorresumeNext
DIMHTTP
setthttp = server.CreateObject (msxml2.xmlhttp)
Http.openget, url, false
Http.send ()
ifhttp.readystate <> 4then
fungsi keluar
endif
getHttppage = bytestoBstr (http.responseBody, GB2312)
setthttp = tidak ada
Iferr.number <> 0then
Response.write <divalign = 'center'> <b> Server salah dalam memperoleh konten file </b> </div>
Err.clear
Endif
Fungsi endfungsi
'Stream byte dikonversi menjadi string
FunctionByTestObstr (body, cset)
dimobjstream
setobjstream = server.createObject (adodb.stream)
objstream.type = 1
objstream.mode = 3
objstream.open
objstream.writeBody
objstream.position = 0
objstream.type = 2
objstream.charset = cset
BytestoBstr = objstream.readtext
objstream.close
setobjstream = tidak ada
Fungsi endfungsi
'Mencegat string, 1. Termasuk sebelum dan sesudah string, 2. Tidak termasuk sebelum dan sesudah string
Functionstrcut (strcontent, startstr, endstr, cuttype)
Dims1, S2
OnerrorresumeNext
SelectCasutType
Case1
S1 = instr (strcontent, startstr)
S2 = Instr (S1, Strcontent, ENDSTR)+LEN (ENDSTR)
Kasus2
S1 = Instr (Strcontent, StartStr)+Len (StartStr)
S2 = Instr (S1, Strcontent, ENDSTR)
Endselect
Iferrthen
strcute = <palign = 'center'> <fontsize = -1> Sebuah kesalahan terjadi mencegat string. </font> </p>
Err.clear
Fungsi keluar
Kalau tidak
strcut = mid (strcontent, s1, s2-s1)
Endif
Fungsi endfungsi
%>
Salin kode di atas untuk Notepad dan simpan sebagai Searchi_BD.asp, dan Anda dapat menggunakannya. Jika Anda ingin mengubah nama file, silakan ubah juga bagian identifikasi biru dari kode berikut ke nama file Anda
strpage = ganti (strpage, href = s?, href = searchi_bd.asp?)
Beberapa penjelasan:
1. Pencarian Baidu pada dasarnya tidak memiliki langkah-langkah anti-pengumpulan. Poin utamanya adalah bahwa Baidu akan mengubah kode sumber halaman hasil pengembalian sesekali, jadi Anda harus sering mengamati halaman hasil pencarian Baidu. Jika kode berubah, Anda dapat mengubah logo string. Dalam hal anti-pengumpulan, Baidu jauh lebih murah hati daripada Google. Saat ini, tidak ada fenomena untuk sementara yang memblokir IP situs sumber karena seringnya permintaan Baidu. Fenomena ini sering terjadi dalam pertanyaan Google. Cara menyelesaikannya dibahas dalam artikel berikutnya.
2. Mengumpulkan lebih memakan sumber daya, dan mencari pencuri sama dengan mencari program, jadi cobalah untuk melepaskan variabel atau objek sedini mungkin dalam program. Jika Anda tidak memiliki banyak sumber daya ruang, disarankan untuk tidak melakukan hal -hal ini.
3. Beberapa orang mungkin tidak ingin mempertahankan koneksi fungsional Baidu dalam pencuri pencarian yang mereka lakukan, seperti snapshot Baidu dan fungsi pencarian di tempat. Untuk alasan ini, saya memberikan versi yang disederhanakan tanpa koneksi ke Baidu dalam paket unduhan. Anda dapat menggunakannya sesuai kebutuhan. Kode tidak akan terdaftar dalam artikel ini, yang sebenarnya mirip dengan versi lengkap.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang, dan saya harap semua orang akan mendukung saluran teknologi baru yang salah.