最近有人问怎么用asp来得到别的网站的网页,并分析后利用它的数据,纯asp是做不到这点的,所以我用vc做了个http组件,很简陋,不如asphttp,因为时间问题我暂时没有做post方法,只能用get方法,但要应付象yahoo,新浪等大的搜索引擎还是绰绰有余的。利用这个组件向这些站发送请求,然后用asp分析并得到其中有用的数据,分析的思路就是利用标志位,如果想要做到通用,可以使用配置文件。我就不多解释了,看例子吧。我的那个组件及源代码下载地址如下:
组件:http://homepage.qdcatv.com.cn/bigeagle/myhttp.zip
源代码:http://homepage.qdcatv.com.cn/bigeagle/myhttpcode.zip
下面是asp例子程序,搜索引擎用的是yahoo
test2.asp
<%@ language=vbscript %>
<html>
<head>
<meta name="generator" content="microsoft visual studio 6.0">
</head>
<body>
<form action="test1.asp" method="get">
<input type=text name="keyword">
<input type=submit value="查找">
</form>
</body>
</html>
test1.asp
<%
dim m_objmyhttp , m_strhtml
set m_objmyhttp = server.createobject ("myhttp.openurl") 创建对象
接受页面参数
m_strkeyword = server.urlencode ( trim( request.querystring ("keyword")))
向yahoo发送搜索关键字"c++"的请求
m_objmyhttp.url = "http://search.yahoo.com/bin/search?p="&m_strkeyword&""
发送请求
m_objmyhttp.sendrequest ()
把html取到局部变量中
m_strhtml = m_objmyhttp.html
set m_objmyhttp = nothing
分析,利用标志位
dim m_strbegintag , m_strendtag , m_strurl
设置标志位
m_strbegintag = "<table border=0 cellpadding=0 cellspacing=0><tr><td height=5></td></tr></table><dd><li>"
m_strendtag = "</a>"
m_intbegin = 1
m_intend = 0
do while not m_intbegin = 0
m_intbegin = instr(m_intbegin + 1 , m_strhtml , m_strbegintag)
m_intend = instr(m_intbegin + len(m_strbegintag) , m_strhtml , m_strendtag)
m_strurl = mid (m_strhtml , m_intbegin+len(m_strbegintag) , m_intend – m_intbegin – len(m_strbegintag) +4 )
if m_intbegin <> 0 then
response.write m_strurl + "<br>"
end if
loop
%>
