上一篇blue1000给大家讲了些原理和几个常用的函数,这一节说一些技巧类的东西~(对高手来说,这是废话,所以高手可以不看,但也不要骂我哦)
4 v/ N" g. M1 r5 ]
(一)如何截取指定区域的HTML代码?
9 V! N M8 b) q5 e1 G$ U8 O(对方网站的HTML代码在哪儿看?晕:IE浏览器>>查看>>源文件。不要告诉我你不知道IE是什么!)
. f |' h/ i5 C3 P; q例如我只想获取以下HTML代码中"<td>"和"</td>"之间的的文字部分:
+ Q% I7 P+ X* C( i% a8 [3 S9 I( _# a<html>
$ @- i( T3 b, A1 u8 A9 x# X
<title>BK(blue1000.com)设计--网页制作资源站点</title>
! @+ T' {3 ~5 U; ?) B<body>
1 [+ C- R* j" w7 G5 u( O5 B<table>
' G& X# o+ {: a7 b$ y$ w/ ^7 B
<tr><td></td></tr>
+ n/ l2 ?) S" k# D! {! }
<tr><td id="Content">BK(blue1000.com)设计--网页制作资源站点是个资源多多的站点……</td></tr>
. Q# S- J$ ]7 i- w
</table>
* v6 p$ A2 ^" d1 } @</body>
. G+ k4 o8 B/ N* C</html>
& }% {; c+ m# P. ?# _; A& e# p<%
- z% i$ n% w8 E- G1 X/ X& v b$ v" K
……
9 j2 w1 S' X9 FDim StrBK,start,over,RsBK
8 `1 W) J9 w+ e5 J( I. J1 ~StrBK=getHTTPPage(网页的地址)
9 A3 j+ U7 e6 `4 U3 u; {start=Instr(StrBK,"<td id=""Content"">") ’此处的作用是获取字符串开始地方的定位。Instr函数前面一节说过了哦~
; z, c* f4 r5 d) H
’这里要有人问了:原来的代码是<td id="Content">,怎么你这里调用的是<td id=""Content"">啊?答案:asp中(准确的说是VBscript中是用两个双引号来表示一个双引号的,因为双引号对于程序来说是个敏感字符。)
1 m- e4 L m/ B7 I. y$ T
over=Instr(StrBK,"…</td></tr>")’此处的作用是获取字符串结束地方的定位。
, }/ K% A. w3 y1 ?0 A) Q$ t8 ^
’这里又要有人问了:( :程序调用HTML代码干吗前面多出来3个点点"…"啊?答:提示:上面一行也有一个</td></tr>,如果这里用</td></tr>来定位的话,程序会错误地把上面一行的</td></tr>当成欲获取字符串的结束部分了。
$ `7 N8 z: S! c2 _RsBK=mid(StrBK,start,over-start) ’此处的作用是取出StrBK中第start个字符到第over个字符之间的字符串。mid函数前面一节我也讲过了;over-start是为了计算出开始位置和结束位置之间的距离,也就是字符数。
3 g" Y* m, W" n# J e+ n' v3 ~
response.write(RsBK) ’最后输出程序获取的内容
; y" X) D, W( e" W
%>
. f* ]- ?( F8 j, a3 q7 _; P
不要高兴的太早,当你运行的时候,你会发现页面的html代码有错误,为什么呢?因为你获取的html代码是:
7 j6 J* a/ f% O* x<td id="Content">BK(blue1000.com)设计--网页制作资源站点是个资源多多的站点…
$ B" s; S9 D( n9 k6 R: n. H( R; H; @2 j
看到了吧?有残缺的HTML代码啊!怎么办呢?start=Instr(StrBK,"<td id=""Content"">")这个语句获取的是"<td id="Content">"在StrBK中的位置数,现在我们可以在程序语句的后面加上17,那么程序就会将位置指向<td id="Content">后面的那个字符.
8 F6 X4 ~- b1 k: w& q0 z, f' {: S1 X好的,程序将改成这样:
B( X6 L5 R- m" |# F' B
<%
5 y# c5 x( }' T# M' Q0 }6 G3 C% r……
& V* O) E6 N' Z% C2 w9 A7 I" ?Dim StrBK,start,over,RsBK
5 |1 J- f+ ^- `: D- fStrBK=getHTTPPage(网页的地址)
. a! I) |+ W9 s/ Y% Rstart=Instr(StrBK,"<td id=""Content"">") + 17
- T+ ^. r/ @- d" A% }over=Instr(StrBK,"…</td></tr>") ’这里你也可以减去七(-7)把3个点去掉
$ h; r. h' R' F) q
RsBK=mid(StrBK,start,over-start)
: I1 K6 s0 @" l3 r! k' eresponse.write(RsBK)
2 Q* s: J3 c8 R" j! P B( J1 Y, ?: N
%>
- ^1 C9 o. `. u; T3 y! d; N这样就OK了,我们就可以将我们想要的东西偷过来显示在我们自己的页面了,呵呵~
2 p, u* D& A/ D: p
(二)如何将获取的字符中的一部分删掉或者做一些修改?
U- ]- o0 M% D$ H, m接着上面的来讲,我们可以将RsBK中的"BK(blue1000.com)"换成"BK":
. r I% q/ }. R8 t9 B! L
RsBK=replace(RsBK,"BK(blue1000.com)","BK")
6 i5 `/ Z" I$ S/ D* b
或者直接把"(blue1000.com)"删掉:
& M9 `. k" | G7 s$ A, N& t) oRsBK=replace(RsBK,"(blue1000.com)","")
: h9 e. j v; P$ P, G/ m
好了,现在RsBK就变成了:"BK设计--网页制作资源站点是个资源多多的站点……"了.
: p3 M2 q8 X6 p9 }+ @( l( J
但是事实中,有些情况可能replace函数是不适应的,比如我们想把某个字符串里面的所有连接都去掉.连接可能包括很多种类型,replace只能替代其中特定的一个,我们不可能用一个又一个对应的replace函数来替换吧?
) K, N& c2 z$ ~, l7 u- F2 o# D! T那么现在就用到了程序中的正则表达式,详细请参阅:
6 A4 ~% m5 r. Y4 Y& t
正则表达式简介(1):
5 A/ J8 ]! U$ d5 T2 a# H8 Vhttp://www.blue1000.com/bbs/dispbbs.asp?boardID=3&ID=1558&page=1. e6 k/ m9 Y, ~! n
正则表达式简介(2):
" c7 ]6 U+ M4 ~/ n
http://www.blue1000.com/bbs/dispbbs.asp?boardID=3&ID=1559&page=17 `/ d }9 _) U2 M2 Z% w/ w
如果哪位朋友正好想去掉页面中所有链接的话,请关注Blue1000.com的下一篇教程:<<如何清除网页中的所有链接[正则表达式]>>
$ }! u. @! Y( U6 `" Z
(三)如何将对方网站的翻页也处理成我们自己的呢?
* a- R3 R% n6 D+ c% H, g2 f
答案是:利用replace函数和页面参数的传递。
l# S, F. ?* N8 \
例如对方页面里含有这样的翻页代码:"<a href=2.htm>下一页</a>",我们可以先利用上面讲的内容,获取这个字符串,然后用replace函数:RsBK=replace(RsBK,"<a href=","<a href=page.asp?Url=")
* {# K* j7 p# E1 B7 K u: u然后再page.asp的程序里获取Url的参数值,最后用小偷技术获取下一页你想要的内容就可以了。
7 E& K1 i) `% ~9 c(四)如何将获取的内容入库
4 c4 u6 I+ q1 [! C4 f c( o- W$ l
由于篇幅有限,这里简单说一下.
0 W& v& b$ s: V! t/ A7 s
其实很简单:
0 U; D$ N2 m k$ a) m将偷来的内容作一下处理,防止在写入数据库的时候出现sql注入错误,例如:replace(String,"'","''")
1 ?% g+ w0 ^8 f2 Y3 I2 e然后执行一个插入数据库操作的sql命令就ok了~
" [1 x1 X. y9 o6 t0 s以上只是一些关于XMLHTTP组件的初级应用,实际上它还能实现的功能还有很多,比如说保存远程图片到本地服务器上,配合adodb.stream组件可以把获取来的数据保存进数据库。小偷的作用和使用范围都很广。
. L, S. } j1 U) a
最好再送大家两个源码,大家可以参考参考:
- d9 f9 s, b$ O4 q) Q! L站长站站长学院的技术文章小偷(blue1000做的,还用了一些Javascript优化了速度):
M+ |/ G1 X2 Z" u& ^9 ihttp://blue1000.com/bbs/dispbbs.asp?boardID=9&ID=1595&page=1
, | v* h j# S% v6 n2 ^8 eblue1000修改完善的音乐小偷程序:
' f! A ` }/ l5 q0 @) a, _. L, O
http://blue1000.com/bbs/dispbbs.asp?boardID=9&ID=1599&page=1