网页数据下载与控制
一、概述及感谢
需要用到网页控制的方面,大致概括一下为:
1、程序中需要嵌入一个网页,例如:天气预报。
2、需要从网上下载数据,写入到本地数据库中。
二、Maxthon的使用
无论哪方面的应用,首要的是到网址(也许是废话)。
以Winland的天气预报为例,假如我的程序需要这样一个东西,我该如何下爪:
1、打开www.17u
2、点击“天气预报”,打开:www.17u/tianqi
3、查一个城市试试,此时结果到了,但网址没变。
4、点击Maxthon的viewpage。
5、在“框架”中,发现一个“内嵌框架”,点击打开。发现原来天气预报的网址为:
www.17u/WeatherInfoIfm.aspx?CityName=%e5%ae%9c%e6%98%8c
6、下一步,在我们自己的程序中就可以使用这个网址,直接来查询了。
综上所述,通过Maxthon,我们可以很方便地到我们所需要的真正的网址。
在viewpage中还有一个“表单”,里面很清楚地显示了Name,method,以及Action。我理解这个Action就是“结果网页”的网址的后半部分(不知对不对?)。
(在网页的表单里面Action是目标地址,就是处理这些递交内容的服务器端脚本。 如果Action为空的话,就是当前文件。)
三、网页关键字(录入、按钮、数据)解读
<% 和 %> ASP脚本片断的开始和结束。在<%和%>标签之间的脚本代码,在主页传递给用户浏览器之前 会在服务器上执行。
<HTML> 和 </HTML> <HTML>标示网页的开头,</HTML>标示网页的结束。
<BODY> 和 </BODY> 网页上的文本应该放置在这些标示之间
<TABLE> 和 </TABLE> 表格的开始和结束
<TABLE Border = “1”> 表格边框参数明确表格边框的宽度
<TH> 和 </TH> 放置表excel口内打 或者x格标题于这些标示之间
<TR> 和 </TR> 标示<TR>在表格里开始一新行。表格中每行以</TR>标示结束。
<TD> 和 </TD> 使用这些标示来明确表格单元格。每个单元格以<TD>标示开始,以</TD>标示结束。表格单元格可以包含任何内容,包括另一个表格。
我们需要重点关注的就是:<TABLE> 和 </TABLE>,<TR> 和 </TR>以及<TD> 和 </TD>。
文本框:<INPUT TYPE="text" NAME="Amount" VALUE="1" SIZE=10>,有的省略了TYPE,VALUE及SIZE,但应该是有关键字INPUT及NAME。
选择框:<SELECT NAME="From" SIZE=5 onChange="CheckMore()">
<OPTION VALUE="EUR" SELECTED>EUR Euro</OPTION> ‘当前值
<OPTION VALUE="USD">USD United States Dollars</OPTION>
<OPTION VALUE="CAD">CAD Canada Dollars</OPTION>
…
</SELECT><BR>
单选钮:<INPUT type=radio CHECKED value=1 name=order>升序 ‘当前选择
<INPUT type=radio value=2 name=order>降序
多选钮:
<TD width=10><INPUT type=checkbox CHECKED value=96801 name=cp_id></TD> ‘当前已选择
<TD>五菱牌LZW6400CV3客车(第F9批)</TD></TR>
<TR>
<TD width=10><INPUT type=checkbox value=96904 name=cp_id></TD>
<TD>中顺牌SZS6503E1轻型客车(第F9批)</TD></TR>
<TR>
按健:<INPUT language=javascript onclick="return onclick1()" type=submit value=查询 name=fetchevent>
四、POST、GET与NAME、VALUE
为了从网页获取数据,需要明确参数。要在网络查询里,向网络服务器发送参数的话,那么需要在核实某个具体网络服务器使用哪种方法后,使用POST或者GET方法。
打开源码,查“POST”,如果给网络服务器发送参数使用的是POST方法,那么文本POS
T就应该出现。如果网络服务器使用GET方法接收参数的话,那么可以在浏览器地址栏里看到该参数名称和值。例如:
www.nycenet.edu/dist_sch/sch/searchresult/asp?boro=Manhattan &flag= schoolInfo2
(第一个参数前面带有一个问号,参数之间使用&符号分割开来,参数的先后排列顺序不重要)
查“Name”,在单词name之后,可以看到括号里有一些文本, 这些文本就是第一个参数的名称。在单词“value=”后面,是参数的当前值。例如:
<INPUT TYPE="text" NAME="Amount" VALUE="1" SIZE=10><BR>
在上面的HTML语句中,单词“Amount”是参数名称,“1”是该参数的当前值。参数值也可以是HTML<option>标签中的 选项之一。例如:
<SELECT NAME="From" SIZE=5 onChange="CheckMore()">
<OPTION VALUE="EUR" SELECTED>EUR Euro</OPTION> ‘当前值
<OPTION VALUE="USD">USD United States Dollars</OPTION>
<OPTION VALUE="CAD">CAD Canada Dollars</OPTION>
<OPTION VALUE="GBP">GBP United Kingdom Pounds</OPTION>
<OPTION VALUE="DEM">DEM Germany Deutsche Marks</OPTION>
…
</SELECT><BR>
Post与Get的区别:
1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。
2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体
中,按照变量和值相对应的方式,传递到action所指向URL。
3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。
4、Get传输的数据量小,这主要是因为受URL长度限制,只能传递大约1024字节;而Post可以传输大量的数据,可以达到2M,所以在上传文件只能使用Post。
5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
6、Get是Form的默认方法。
五、使用WebBrowser
使用WebBrowser需要添加“Microsoft Web 浏览器”(VBA)或“Microsoft internet controls”(VB)。
1、WebBrowser的简要使用方法:
‘打开前
Urlstr="www.17u/WeatherInfoIfm.aspx?CityName=%e5%ae%9c%e6%98%8c"
F_tqyb.WebBrowser1.Navigate Urlstr
F_tqyb.Show ‘这句话屏蔽时,WebBrowser同样打开网页,不过不显示在桌面上
Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
If WebBrowser1.ReadyState <> READYSTATE_COMPLETE Then Exit Sub ‘页面调用是否完毕
……
End Sub
2、我们想要的网页内容:
一般说来,我们想要的网页内容,就在WebBrowser1.document.body.innerhtml和WebBrowser1.document.body.innertext中,通过替换、分析,得到我们想要的数据。
Innerhtml中的内容就是网页源码。
innertext中的内容则是网页上所显示的内容。(这个内容就是我们把网页另存为文本时的内容)
个人认为使用Innerhtml要方便一些。
当有了html的源码后,使用查、替换功能可以将所需要的数据剥离出来。另外还可以将源码写入到文本文件中,将文本文件的扩展名修改为htm,再利用Excel的“导入外部数据”-“导入数据”功能将数据读入Excel。(通过该方法,导入时选取特定的表格,可以查阅需要导入的表格号WebTables)
3、在程序中使用WebBrowser显示网页
⑴、如果你所需要的网页网址中带有?,且取值规则非常清楚,则很方便,直接将参数及
值写到网址中就好,如上例所示(显示宜昌的天气),只需注意:第一个参数前面带有一个问号,参数之间使用&符号分割开来,参数的先后排列顺序不重要。
如果值中带有非英文和数字,则需进行转换。(套用Winland的程序)
例:City= Escape(“宜昌”)
Public Function Escape(ByVal strText As String) As String
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论