[讨论]读取HTML的资料

mzcih 2005-12-27 08:37:06
http://www.weathercn.com/forecast/qushi.jsp?sta_id=59072

如果我想读取当天的天气:14℃ /10℃。

能实现吗?实现方法有那些?
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzcih 2005-12-27
  • 打赏
  • 举报
回复
喔!厉害,我参考下。

我刚刚搜索到一些简单的教程,如下:

<%
Dim objXMLHTTP, xml
Set xml = Server.CreateObject("Microsoft.XMLHTTP")

xml.Open "GET", "http://www.weathercn.com/forecast/24time.jsp?sta_id=59072", False
' Pull the data from the web page
xml.Send

Response.write "Here's the html we now have in our xml object"
Response.write "<BR><BR><BR>"
Response.Write "<xmp>"
Response.Write xml.responseText
Response.Write "</xmp>"
Response.write "<BR><BR><BR>"
'Response.write " Now here's how the page looks:<BR><BR>"
'Response.Write xml.responseText

Set xml = Nothing
%>

这样就把人家的页面
创造奇迹9999 2005-12-27
  • 打赏
  • 举报
回复
<%
On Error Resume Next
Server.Scripttimeout=9999999
Function Gethttppage(Path)
T = Getbody(Path)
Gethttppage=Bytestobstr(T,"Gb2312")
End Function

' 首先,进行小偷程序的一些初始化设置,以上代码的作用分别是忽略掉所有非致命性错误,把小偷程序的运行超时时间设置得很长(这样不会出现运行超时的错误),转换原来默认的utf-8编码转换成gb2312编码,否则直接用xmlhttp组件调用有中文字符的网页得到的将是乱码。

Function Getbody(Url)
On Error Resume Next
Set Retrieval = Createobject("Microsoft.Xmlhttp")
With Retrieval
.Open "Get", Url, False, "", ""
.Send
Getbody = .Responsebody
End With
Set Retrieval = Nothing
End Function

'然后调用xmlhttp组件创建一个对象并进行初始化设置。

Function Bytestobstr(Body,Cset)
Dim Objstream
Set Objstream = Server.Createobject("Adodb.Stream")
Objstream.Type = 1
Objstream.Mode =3
Objstream.Open
Objstream.Write Body
Objstream.Position = 0
Objstream.Type = 2
Objstream.Charset = Cset
Bytestobstr = Objstream.Readtext
Objstream.Close
Set Objstream = Nothing
End Function

Function Newstring(Wstr,Strng)
Newstring=Instr(Lcase(Wstr),Lcase(Strng))
If Newstring<=0 Then Newstring=Len(Wstr)
End Function

'处理抓取回来的数据需要调用adodb.Stream组件并进行初始化设置。%>


<%
Dim Wstr,Str,Url,Start,Over,City
'定义一些需要使用到的变量

City = Request.Querystring("Id")
'程序传回的id变量(即用户选择的城市)赋给id

Url="Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city="&City&""
'这里设置需要抓取的页面地址,当然你也可以直接指定某个地址而不使用变量

Wstr=Gethttppage(Url)
'获取指定页面的全部数据

Start=Newstring(Wstr," <Html>")
'这里设置需要处理的数据的头部,这个变量应视不同情况而设置,具体内容可以通过查看需要抓取的页面的源代码来确定。因为在这个程序里我们需要抓取整个页面,所以设置为页面全部抓取。注意,设置的内容必须是页面内容唯一的,不可以重复。

Over=Newstring(Wstr," </Html>")
'和start相对应的就是需要处理的数据的尾部,同样的,设置的内容必须是页面中唯一的。

Body=Mid(Wstr,Start,Over-start)
'设置显示页面的范围

'下面就是动用乾坤挪移+++的时候了,通过replace可以用一些字符替换掉数据中指定的字符。

Body = Replace(Body,"Skin1","天气预报 - 斯克网络")
Body = Replace(Body,"Http://Appnews.Qq.Com/Cgi-bin/News_qq_search?city","Tianqi.Asp?id")

'本程序中已经完成了替换的工作,如果有其他需要的话可以继续进行类似的替换操作。

Response.Write Body
%>






以上是利用XMLHTTP获取腾迅天气预报
mzcih 2005-12-27
  • 打赏
  • 举报
回复
的确是有版权的!但也有免费的。

但我不想要整个页面,只需其中一二个数据就行了。

我参考下XMLHTTP的资料先,谢了!
KimSoft 2005-12-27
  • 打赏
  • 举报
回复
一些网站有天气预报的代码,不过可能有他们的版权。

这个你可以用xmlhttp来读取,再分析,做成你要的样子。

28,405

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧