โปรแกรมรวบรวมจะเรียกหน้าเว็บบนเว็บไซต์อื่นผ่านทางคอมโพเนนต์ XMLHTTP ใน XML ตัวอย่างเช่น โปรแกรมรวบรวมข่าวจำนวนมากเรียกหน้าเว็บข่าวของ Sina และ HTML บางส่วนในนั้นจะถูกแทนที่ และโฆษณาก็จะถูกกรองด้วย ข้อดีของการใช้โปรแกรมรวบรวมข้อมูลคือ ไม่จำเป็นต้องดูแลรักษาเว็บไซต์ เนื่องจากข้อมูลในโปรแกรมรวบรวมข้อมูลมาจากเว็บไซต์อื่น และจะมีการอัปเดตเมื่อมีการอัปเดตเว็บไซต์ โดยทั่วไปแล้ว จะสามารถประหยัดทรัพยากรเซิร์ฟเวอร์ได้ โปรแกรมรวบรวมมีไฟล์เพียงไม่กี่ไฟล์และเนื้อหาเว็บทั้งหมดมาจากเว็บไซต์อื่น ข้อเสียคือ:
ไม่เสถียร หากเว็บไซต์เป้าหมายผิดพลาด โปรแกรมก็จะผิดพลาดไปด้วย และหากเว็บไซต์เป้าหมายได้รับการอัพเกรดและบำรุงรักษา โปรแกรมรวบรวมก็จะต้องแก้ไขตามความเร็วด้วย เนื่องจากเป็นการโทรระยะไกล ความเร็วจะช้าลง กว่าการอ่านข้อมูลบนเซิร์ฟเวอร์ภายในเครื่องช้ากว่าแน่นอน
1. คดีต่างๆ
ต่อไปนี้เป็นคำอธิบายโดยย่อเกี่ยวกับการประยุกต์ใช้ XMLHTTP ใน ASP
คัดลอกรหัสรหัสดังต่อไปนี้:
-
'ฟังก์ชั่นที่ใช้กันทั่วไป
'1. ป้อนที่อยู่หน้าเว็บเป้าหมาย URL และค่าที่ส่งคืน getHTTPPage คือโค้ด html ของหน้าเว็บเป้าหมาย
ฟังก์ชั่น getHTTPage(url)
สลัวHttp
ตั้งค่า Http=server.createobject(MSXML2.XMLHTTP)
Http.open GET, url, false
Http.ส่ง()
ถ้า Http.readystate<>4 แล้ว
ฟังก์ชั่นทางออก
สิ้นสุดถ้า
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
ตั้งค่า http=nothing
ถ้า err.number<>0 แล้ว err.Clear
ฟังก์ชั่นสิ้นสุด
'2. แปลง Ranma ใช้ xmlhttp โดยตรงเพื่อเรียกหน้าเว็บด้วยตัวอักษรจีน
ฟังก์ชั่น BytesToBstr (เนื้อหา)
objstream สลัว
ตั้ง objstream = Server.CreateObject (adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.เปิด
objstream เขียนเนื้อหา
objstream ตำแหน่ง = 0
objstream.Type = 2
objstream.Charset = GB2312 'แปลงการเข้ารหัส UTF-8 เริ่มต้นเดิมเป็นการเข้ารหัส GB2312 มิฉะนั้น การใช้ส่วนประกอบ XMLHTTP โดยตรงเพื่อเรียกหน้าเว็บด้วยตัวอักษรจีนจะส่งผลให้รหัสที่อ่านไม่ออก
BytesToBstr = objstream.ReadText
objstream.ปิด
ตั้ง objstream = ไม่มีเลย
ฟังก์ชันสิ้นสุด
'ลองเรียกเนื้อหา html ของ http://www.google ด้านล่างนี้
Dim Url,Html
URL=http://www.google;
Html = getHTTPage(Url)
การตอบกลับเขียน Html
-
2. ฟังก์ชั่นที่ใช้กันทั่วไปหลายอย่าง
ฟังก์ชัน InStr
คำอธิบาย ส่งกลับตำแหน่งที่อักขระบางตัว (string2) ปรากฏขึ้นครั้งแรกในสตริงอื่น (string1)
SyntaxInStr(string1, string2)
ตัวอย่างเช่น:
Dim SearchString, SearchChar
SearchString =http://www.google ' สตริงที่จะค้นหา
SearchChar = blue1000 'ค้นหา blue1000
MyBK = Instr(SearchString, SearchChar) ' กลับ 8
'ส่งคืน 0 หากไม่พบ เช่น:
SearchChar = BK
MyBK = Instr(SearchString, SearchChar) ' ส่งกลับ 0
ฟังก์ชั่นกลาง
คำอธิบาย: ส่งกลับจำนวนอักขระที่ระบุจากสตริง
SyntaxMid(สตริง, เริ่มต้น, บน)
ตัวอย่างเช่น:
ดิม มายบีเค
MyBK = Mid (ดีไซน์ BK (www.google) ของเรา, 7, 12) 'ตัดสตริงอักขระ 12 ตัวหลังอักขระตัวที่ 7 ของดีไซน์ BK (www.google) ของเรา' ในขณะนี้ ค่าของ MyBK จะกลายเป็น www.google
แทนที่ฟังก์ชัน
Dim SearchString, SearchChar
SearchString = BK Design ของเราเป็นสตริงของเว็บไซต์ทรัพยากรการสร้างเว็บไซต์ที่จะค้นหาภายใน
SearchString =Replace(SearchString, BK design, Www.google)'ขณะนี้ ค่าของ SearchString กลายเป็น Www.google ของเราเป็นเว็บไซต์ทรัพยากรการสร้างเว็บไซต์
3. สกัดกั้นโค้ด HTML ของพื้นที่ที่ระบุ
ตัวอย่างเช่น ฉันเพียงต้องการได้รับส่วนข้อความระหว่าง <td> และ </td> ในโค้ด HTML ต่อไปนี้:
<html>
<title>BK (www.google) เครื่องมือค้นหาของ Google</title>
<ร่างกาย>
<ตาราง>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) เครื่องมือค้นหาของ Google เป็นเว็บไซต์ที่มีแหล่งข้อมูลมากมาย...</td></tr>
</ตาราง>
</ร่างกาย>
</html>
-
-
Dim StrBK,สตาร์ท,โอเวอร์,RsBK
StrBK=getHTTPPage (ที่อยู่ของหน้าเว็บ)
start=Instr(StrBK,<td id=Content>) 'ฟังก์ชันที่นี่คือการรับตำแหน่งของจุดเริ่มต้นของสตริง มีคนจะถามที่นี่: รหัสต้นฉบับคือ <td id=Content> ทำไมคุณถึงเรียก <td id=Content> ที่นี่ คำตอบ: ใน asp (เพื่อให้ชัดเจนมันจะแสดงด้วยเครื่องหมายคำพูดคู่สองตัวใน VBscript A double เครื่องหมายคำพูด เนื่องจากเครื่องหมายคำพูดคู่เป็นอักขระที่ละเอียดอ่อนสำหรับโปรแกรม) over=Instr(StrBK,…</td></tr>)'ฟังก์ชันที่นี่คือการรับตำแหน่งของจุดสิ้นสุดของสตริง 'มีคนจะถามอีกครั้งที่นี่:( : ทำไมจึงมีจุดพิเศษสามจุดอยู่หน้าโค้ด HTML ที่โปรแกรมเรียก... คำตอบ: เคล็ดลับ: มี </td></tr> อยู่ด้านบนด้วย บรรทัด หากคุณใช้ </td></ tr> เพื่อค้นหา โปรแกรมจะเข้าใจผิดว่า </td></tr> ในบรรทัดด้านบนเป็นจุดสิ้นสุดของสตริงที่จะได้รับ RsBK=mid(StrBK,start, สตาร์ทมากเกินไป) 'ฟังก์ชันที่นี่คือการแยกสตริงระหว่างอักขระเริ่มต้นและอักขระโอเวอร์ใน StrBK ฉันยังพูดถึงฟังก์ชันกลางในส่วนที่แล้ว การเริ่มต้นมากเกินไปคือการคำนวณระยะห่างระหว่างตำแหน่งเริ่มต้นและตำแหน่งสิ้นสุด นั่นคือจำนวนอักขระ
response.write(RsBK) 'ในที่สุดก็ส่งออกเนื้อหาที่ได้รับจากโปรแกรม
-
อย่าดีใจจนเกินไป เมื่อรันแล้ว จะพบว่ามีข้อผิดพลาดในโค้ด html ของเพจ เพราะเหตุใด? เนื่องจากโค้ด html ที่คุณได้รับคือ: <td id=Content>BK (www.google) เครื่องมือค้นหาของ Google เป็นไซต์ที่มีแหล่งข้อมูลมากมาย...
คุณเห็นสิ่งนั้นไหม? มีโค้ด HTML ไม่สมบูรณ์! จะทำอย่างไร? คำสั่ง start=Instr(StrBK,<td id=Content>) รับเนื้อหาของ <td id=Content> ใน
หมายเลขตำแหน่งใน StrBK ตอนนี้เราสามารถบวก 17 หลังคำสั่งโปรแกรมได้ จากนั้นโปรแกรมจะชี้ตำแหน่งไปที่อักขระหลัง <td id=Content>
โอเค โปรแกรมจะเปลี่ยนเป็นดังนี้:
-
-
Dim StrBK,สตาร์ท,โอเวอร์,RsBK
StrBK=getHTTPPage (ที่อยู่ของหน้าเว็บ)
start=Instr(StrBK,<td id=Content>) + 17
over=Instr(StrBK,…</td></tr>) 'ที่นี่คุณสามารถลบเจ็ด (-7) เพื่อลบ 3 คะแนนได้
RsBK=กลาง(StrBK,สตาร์ท,โอเวอร์สตาร์ท)
ตอบกลับเขียน(RsBK)
-
ไม่เป็นไร ขโมยของที่อยากได้มาโชว์ในเพจก็ได้ 555~
4. ลบหรือแก้ไขอักขระที่ได้รับ
แทนที่ BK(www.google) ใน RsBK ด้วย BK:
RsBK=แทนที่(RsBK,BK(www.google),BK)
หรือลบ (www.google) โดยตรง:
RsBK=แทนที่(RsBK,(www.google),)
เอาล่ะ ตอนนี้ RsBK กลายเป็น: BK Google search engine เป็นไซต์ที่มีทรัพยากรมากมาย... แต่อันที่จริง ฟังก์ชันการแทนที่อาจไม่เหมาะกับบางสถานการณ์ ตัวอย่างเช่น เราต้องการแทนที่การเชื่อมต่อทั้งหมดในสตริงบางตัว การเชื่อมต่ออาจมีหลายประเภท และการแทนที่สามารถแทนที่ได้เพียงชนิดใดชนิดหนึ่งเท่านั้น