最近网上流行着一些采集程序,更多人拿着这些东西在网上叫卖,很多不太懂的人看着那些程序眼羡,其实如果你懂一些ASP,了解自动采集程序的原理后,你会感觉实现自动化也是那么的简单.
原理及优点:通过XML中的XMLHTTP组件调用其它网站上的网页,然后批量截取或替换原有的信息使其转化成变量后再一一储存到数据库中。其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的。与其单纯的ASP小偷程序不同的是:它已经不再依赖其目标网站。
简单事例:
原理及优点:通过XML中的XMLHTTP组件调用其它网站上的网页,然后批量截取或替换原有的信息使其转化成变量后再一一储存到数据库中。其主要的优点便是无需再手工添加大量的信息了,可以指定对某一个站信息的截取进行批量录入,达到省时省力的目的。与其单纯的ASP小偷程序不同的是:它已经不再依赖其目标网站。
简单事例:
1
<
%
2
'
声明取得目标信息的函数,通过XML组件进行实现。
3
Function
GetURL(url)
4
Set
Retrieval
=
CreateObject
(
"
Microsoft.XMLHTTP
"
)
5
With
Retrieval
6
.Open
"
GET
"
, url,
False
7
.Send
8
GetURL
=
bytes2bstr(.responsebody)
9
'
对取得信息进行验证,如果信息长度小于100则说明截取失败
10
if
len
(.responsebody)
<
100
then
11
response.write
"
获取远程文件 <a href=
"
&
url
&
"
target=_blank>
"
&
url
&
"
</a> 失败。"
12
response.
end
13
end
if
14
15
End
With
16
Set
Retrieval
=
Nothing
17
End Function
18
'
二进制转字符串,否则会出现乱码的!
19
function
bytes2bstr(vin)
20
strreturn
=
""
21
for
i
=
1
to
lenb(vin)
22
thischarcode
=
ascb(midb(vin,i,
1
))
23
if
thischarcode
<
&
h80
then
24
strreturn
=
strreturn
&
chr
(thischarcode)
25
else
26
nextcharcode
=
ascb(midb(vin,i
+
1
,
1
))
27
strreturn
=
strreturn
&
chr
(
clng
(thischarcode)
*
&
h100
+
cint
(nextcharcode))
28
i
=
i
+
1
29
end
if
30
next
31
bytes2bstr
=
strreturn
32
end function
33
'
声明截取的格式,从Start开始截取,到Last为结束
34
Function
GetKey(HTML,Start,Last)
35
filearray
=
split
(HTML,Start)
36
filearray2
=
split
(filearray(
1
),Last)
37
GetKey
=
filearray2(
0
)
38
End Function
39
40
Dim
Softid,Url,Html,Title
41
42
'
获取要取页面的ID
43
44
SoftId
=
Request(
"
Id
"
)
45
46
Url
=
"
http://www3.skycn.com/soft/
"
&
SoftId
&
"
.html
"
47
48
Html
=
GetURL(Url)
49
50
'
以截取天空软件的软件名为例子
51
52
Title
=
GetKey(Html,
"
<font color='#004FC6' size='3'>
"
,
"
</font></b></td></tr>
"
)
53
54
'
打开数据库,准备入库
55
56
dim
connstr,conn,rs,sql
57
58
connstr
=
"
DBQ=
"
+
server.mappath(
"
db1.mdb
"
)
+
"
;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
59
60
set
conn
=
server.
createobject
(
"
ADODB.CONNECTION
"
)
61
62
conn.open connstr
63
64
set
rs
=
server.
createobject
(
"
adodb.recordset
"
)
65
66
sql
=
"
select [列名] from [表名] where [列名]='
"
&
Title
&
"
'"
67
68
rs.open sql,conn,
3
,
3
69
70
if
rs.eof
and
rs.bof
then
71
72
rs(
"
列名
"
)
=
Title
73
74
rs.update
75
76
set
rs
=
nothing
77
78
end
if
79
80
set
rs
=
nothing
81
82
Response.Write
"
采集完毕!"
83
84
%
>

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84
