关于如何在读取网页时截取相应字段的问题。跪求各位老大给出办法!!!(68分!又顺又发!!!)
从网页文件里面提取不同信息,如这个网页部分
<table width="445" border="0" cellspacing="1" cellpadding="3" height="112" bgcolor="#CCCCCC" align="center" class="td1">
<tr bgcolor="#efefef" class=td1>
<td width="21%">
<div align="right">公司简称:</div>
</td>
<td width="79%">
嘉鸿 </td>
</tr >
<tr bgcolor="#efefef" class=td1>
<td width="21%">
<div align="right">公司全称:</div>
</td>
<td width="79%">
深圳市嘉鸿电子 </td>
</tr>
<tr bgcolor="#efefef" class=td1>
<td width="21%">
<div align="right">联系人:</div>
</td>
<td width="79%">
伍小姐 </td>
</tr>
我想把公司名称、联系人存到数据库里去(数据库存储倒不是问题)
关键是怎么把这些信息类别区分出来。我是批量读很多网页。
c() = Inet1.OpenURL(, icByteArray)用的是这个控件的这个方法
关键是批量循环中怎么从c()中截取出相应的信息。按长度应该不行,跪求各位老大给出办法!!!
问题点数:0、回复次数:17Top
1 楼pingkwok(凭空倭寇)回复于 2004-12-03 11:02:26 得分 0
顶!!!!Top
2 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:03:46 得分 0
如果网页是格式化的,那就很好办,做一个循环。找关键字。
我以前做过,但是是用webbrowser控件做的。Top
3 楼wildroseck(切)回复于 2004-12-03 11:08:50 得分 0
关键字怎么找
就针对我上面列出的那段HTML
比如我想找“公司简称”这个字串的位置,如何找?Top
4 楼wildroseck(切)回复于 2004-12-03 11:10:24 得分 0
网页是格式化的
http://www.161online.com.cn/company_info.phtml?company_id=45788
我做循环的是后面那个IDTop
5 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:14:48 得分 0
用instr(),找"公司简称"这几个字。
如果有的话,比如说,在第 n 个字付的位置。
然后再用 instr() 从 n 开始找,找到<td width="79%">这几个关键字,
和</td>之间的字符取出来,空格去掉,就是你要的内容了。
主要用的就是instr()这个函数。Top
6 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:17:57 得分 0
不错啊,把里面信息拿出来,可以卖钱呢。就是不知道合不合法。Top
7 楼wildroseck(切)回复于 2004-12-03 11:35:16 得分 0
我调试了一下
我那个c()里面读出来的怎么都是乱码
如:
????琼?敨杩瑨∽∵?琯????牴??琯扡敬??慴汢?楷瑤????潢摲牥∽?挠汥獬慰楣杮∽?挠汥灬摡楤杮∽?愠楬湧∽散瑮牥???琼?????摴愠楬湧∽散瑮牥?楷瑤?ㄢ??椼杭猠捲∽浩条獥欯潬潧朮晩?楷瑤?ㄢ??敨杩瑨∽财??摴????摴愠楬湧∽散瑮牥?慶楬湧∽業摤敬??呄??‰??呈?????????剕??獵摥椠?桴?潭楶????????琠硥?獵摥椠?桴?潭楶??????似???汣獡楳?汣楳?????????晣?????????挠摯扥獡?瑨灴?搯睯汮慯?慭牣浯瑤???敨杩瑨????椼杭猠捲栽瑴??睷??漱汮湩?潣?湣椯慭Top
8 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:39:08 得分 0
呵呵,用webbrowser吧Top
9 楼wildroseck(切)回复于 2004-12-03 11:48:22 得分 0
这个控件在哪引用?我怎么没找到
我是vB6Top
10 楼wwqna(york)回复于 2004-12-03 11:48:22 得分 0
'从网页表格中读入数据
Private Sub Command1_Click()
Dim vDoc, vTag, coll
Dim i As Integer
Dim j As Integer
Set vDoc = ie.Document
Dim mstrcell As String
Set coll = vDoc.All("19")
For i = 0 To coll.rows.length - 1
For j = 0 To coll.rows(i).cells.length - 1
mstrcell = mstrcell & Space(4) & coll.rows(i).cells(j).innertext
Next j
Debug.Print mstrcell
mstrcell = ""
Next i
End Sub
Private Sub Form_Load()
ie.Navigate "E:\1.htm"
End Sub
htm内容
<TABLE id=19 BORDER=1 WIDTH=80%>
<THEAD>
<TR>
<TH>Heading 1</TH>
<TH>Heading 2</TH>
</TR>
</THEAD>
<TBODY>
<TR>
<TD>Row 1, Column 1 text.</TD>
<TD>Row 1, Column 2 text.</TD>
</TR>
<TR>
<TD>Row 2, Column 1 text.</TD>
<TD>Row 2, Column 2 text.</TD>
</TR>
</TBODY>
</TABLE>
Top
11 楼wildroseck(切)回复于 2004-12-03 11:49:02 得分 0
我用字符串来读,不是乱码
但是字符串长度有限制啊
HTML比较多,读不完整Top
12 楼wildroseck(切)回复于 2004-12-03 11:51:03 得分 0
wwqna(york) :
这个程序每读一个网页还要先打开一个网页
那我要读10000页
是不是会慢死啊Top
13 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:55:23 得分 0
microsoft internet controls
就在你那个inet控件的引用上面一行
开始下载
WebBrowser1.Silent = True
WebBrowser1.Navigate2 txtURL1.Text
下载完之后开始读入字符串。
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
labStatus.Caption = "完成"
Dim strHtml As String
strHtml = WebBrowser1.Document.body.innerHTML
end subTop
14 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 11:59:21 得分 0
效果就跟你IE中一页一页的点那是一样的,区别只在于人手跟机器自动帮你做。Top
15 楼wildroseck(切)回复于 2004-12-03 12:50:29 得分 0
楼上的
你那个strHTML这个string型的变量好象存不完整张网页的HTML代码吧Top
16 楼fishzone(阿愚@脸上有疤)回复于 2004-12-03 13:24:39 得分 0
应该没有问题吧,
加上这两句:
If Len(strHtml) > 10000 Then
Debug.Print URL
Debug.Print Len(strHtml)
End If
我拿新浪首页测了一下,180多K的页没有问题。
http://www.sina.com.cn/allnews/ddt/ddt.html
184822
http://www.sina.com.cn/
184822
http://101.adsina.allyes.com/main/adfshow?user=AFP6_for_SINA|home|hometextleft10&db=sina&border=0&local=yes
178546
没有找到关于string的长度限制资料,问问其他高人吧Top
17 楼wwqna(york)回复于 2004-12-03 15:44:16 得分 0
这还不是一样的吗?如果你觉得那样更块的话,那你就用字符检测的方法好了Top




