目標と要件:
中国の銀行の最新の為替レートをクロール
クロールキー
- ページを取得し、VBAで文字列変数に保存します
- 正規表現の文字列処理方法と同様に
まず、URLを入力してください
https://www.boc.cn/sourcedb/whpj/
オープンソースのWebページ
の必要性のこの部分で見つける
陽性発現により、タグ部分を除去する必要性
Option Explicit
Sub demo()
Dim t
t = Timer()
Dim s As String, xh As Object
Set xh = CreateObject("microsoft.xmlhttp")
'调用网络访问组件,相当于人类双击打开浏览器
xh.Open "get", "https://www.boc.cn/sourcedb/whpj/", False
'调用open方法,指定URL,访问方法及同步异步
'确定访问方法,get为只读,post还可以发送
'后面跟一个URL
'false为同步模式,是发送请求后,程序暂停运行,等待反馈后再运行
'true为异步
xh.send
'提交请求,类似于回车
s = xh.responsetext
'responsetext得到网页字符串
getrates s '调用函数
MsgBox "用时" & Timer() - t & "秒"
End Sub
Sub getrates(s As String)
Dim reg As Object, m As Object, mchs As Object
Dim i As Long, j As Long, p As String
Set reg = CreateObject("vbscript.regexp")
'调用正则表达式组建
p = "<tr>\s*<td>([^<]*)</td>\s*<td>([^<]*)</td>\s*<td>([^<]*)</td>\s*<td>([^<]*)</td>\s*<td>([^<]*)</td>\s*<td>([^<]*)</td>\s*<td\s*\S*>([^<]*)</td>\s*<td>([^<]*)</td>\s*</tr>"
'<tr>+任意空白字符+<td>+匹配字符^或者<,子表达式零次或多次,二者一个或多个+<\td>+重复结构+<\tr>
'重复结构<tr>\s*<td>([^<]*)</td>
'但是注意有一个部分是\s*<td\s*\S*>([^<]*)</td>,这段结构有点点不同
reg.Pattern = p
reg.Global = True
'同样的,先在网页编辑器中在线测试后再粘贴过来
Set mchs = reg.Execute(s)
'执行reg语句
i = 2
For Each m In mchs
For j = 0 To m.submatches.Count - 1
Cells(i, j + 1) = m.submatches.Item(j)
'利用submatch进行赋值,得到每个分组后的结果
Next j
i = i + 1
Next m
End Sub
コードはより複雑で、必要性は、特定の正規表現の部分では、ゆっくりと読むには
最後に、次のような結果を得ることができます
そして、元のページを比較
もちろん、単一ページコピーのためにして貼り付け、またはコードを書くにはあまりにも複雑で面倒ですが、2を失った、しかし、そのので、ここ1、今のウェブサイトは基本的ではないので、単純な、右の時に練習の手、本当の基本とものがあります上の
そして、Pythonの背後にある他の科学は、彼は、土台としてこれを持っている巧みなのいくつかをすべき