如何用 Access 分析一個(gè)網(wǎng)站,或者在網(wǎng)站上提交一個(gè)查詢,得到結(jié)果后存儲(chǔ)進(jìn)數(shù)據(jù)庫(kù)哪?
如何用 Access 下載 DVBBS 論壇上所有的帖子?
如何用 ACCESS 編寫灌水程序?
方法一:
答案非常簡(jiǎn)單—— DHTML 編程。
有人可能問了,ACCESS 使用的是 VBA ,而 DHTML 中使用的是 VBS 怎么可能通用哪?其實(shí) VBS / VBA 都是 VB 的子集。在 Access 中只要引用
Microsoft Internet Controls
Microsoft HTML Object Library
即可,然后在窗體上加入 “Microsoft Web 瀏覽器”控件
好了,下面就以我寫的一個(gè)讀取某 IP 物理地域查詢網(wǎng)站頁(yè)面的數(shù)據(jù)庫(kù)為例說明 DHTML / “Microsoft Web 瀏覽器”控件在 ACCESS 的應(yīng)用吧。
“Microsoft Web 瀏覽器”控件的作用是什么哪?主要就是為了獲得 DOCUMENT 對(duì)象的,DHTML 的操作都是以 DOCUMENT 對(duì)象為運(yùn)行基礎(chǔ)的。
要完成讀取網(wǎng)頁(yè)的功能我們必須了解 DHTML 的幾個(gè)簡(jiǎn)單的對(duì)象以及屬性
1、DOCUMENT 對(duì)象:代表這整個(gè) HTML 文檔
2、BODY 對(duì)象:是 DOCUMENT 對(duì)象的子對(duì)象,里面存儲(chǔ)著所有顯示給用戶看的 HTML 代碼
3、innerText 屬性:頁(yè)面中顯示給客戶看的文本,注意:不是 HTML 代碼呦
4、innerHTML屬性:構(gòu)成頁(yè)面的 HTML 代碼
5、對(duì)象.all.length屬性:頁(yè)面中所有 element 的個(gè)數(shù)。(all 用于表示所有對(duì)象)
ok ,接下來就讓我們一邊寫代碼,一邊分析吧:
以下為引用的內(nèi)容:
Option Compare Database
Dim blnSwitch As Boolean
Private Sub Command1_Click() '用于啟動(dòng)瀏覽功能
Me.WebBrowser3.Navigate ("http://ip.loveroot.com/index.php?job=search")
End Sub
Private Sub Command11_Click() '將需要搜索的IP 寫入全局變量
splitIP Text1.Value
End Sub
Function splitIP(strip) '將需要搜索的IP 寫入全局變量
Dim a() As String
strip = strip & "."
a = Split(strip, ".")
Dim i As Long
For i = 0 To UBound(a)
If a(i) = "" Then a(i) = "0"
lngSearchIP(4 - i) = CLng(a(i))
Next i
End Function
Sub WriteLog(ip1 As String) '讀取結(jié)果
Dim dc As MSHTML.HTMLDocument
Dim Bd As MSHTML.HTMLBody
Dim El As MSHTML.HTMLElementCollection
Dim strip As String
Dim strAdd As String
Dim strSql
Dim i As Long
Set dc = WebBrowser3.Document
Set Bd = dc.body
Dim lngStart As Long
'循環(huán) DOCUMENT 中所有的元素獲取需要的字符
For i = 0 To dc.all.length - 1
'由于該服務(wù)器重寫界面,我改了一下分析代碼
'If dc.all(i).tagName = "p" And Left(dc.all(i).innerText, 4) = "查詢結(jié)果" Then
If dc.all(i).tagName = "p" And Left(dc.all(i).innerText, 8) = "官方數(shù)據(jù)查詢結(jié)果" Then
'由于該服務(wù)器重寫界面,我改了一下分析代碼
'strAdd = Mid(dc.all(i).innerText, InStr(1, dc.all(i).innerText, "(") + 2, InStr(1, dc.all(i).innerText, ")") - InStr(1, dc.all(i).innerText, "(") - 3)
'strip = Mid(dc.all(i).innerText, InStr(1, dc.all(i).innerText, "查詢結(jié)果:") + 6, InStr(1, dc.all(i).innerText, "(") - InStr(1, dc.all(i).innerText, "查詢結(jié)果:") - 7)
strAdd = Right(dc.all(i).innerText, Len(dc.all(i).innerText) - InStr(dc.all(i).innerText, " - ") - 3)
strip = strNowIP
LabelSIP.Caption = strip & strAdd
'ok 終于得到需要的數(shù)據(jù)了,用 SQL 語(yǔ)句直接寫入數(shù)據(jù)庫(kù)吧
strSql = "update ipaddress set [ip1]='" & strip & "',[add]='" & strAdd & "' where mark='last'"
CurrentProject.Connection.Execute strSql
strSql = "insert into ipaddress([ip1],[add],[mark],[enip]) values('" & strip & "','" & strAdd & "','no'," & CStr(enaddr(strip)) & ")"
CurrentProject.Connection.Execute strSql
新聞熱點(diǎn)
疑難解答
圖片精選