VBA上昇ピース一緒にすべての人々のレッスンサーティーン:シンプルな爬虫類

目標と要件:
中国の銀行の最新の為替レートをクロール

クロールキー

  1. ページを取得し、VBAで文字列変数に保存します
  2. 正規表現の文字列処理方法と同様に

まず、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の背後にある他の科学は、彼は、土台としてこれを持っている巧みなのいくつかをすべき

公開された26元の記事 ウォンの賞賛5 ビュー1055

おすすめ

転載: blog.csdn.net/qq_43568982/article/details/104055980