从HTML中刮取数据以返回到Excel中的单元格

我对编码非常陌生。 我知道基础知识,但是除了这个项目之外,我不需要那些先进的知识。

我正在尝试searchAZ医疗委员会网站上的许可证号码,单击search结果以提取configuration文件,然后将configuration文件中的信息传输到Excel中的单元格。

到目前为止,我的代码看起来像这样,它完美的工作(除了数据挖掘部分)

Sub AZMDSearch() Dim lastrow As Long Dim Name2 As Object lastrow = Sheet1.Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To lastrow Application.ScreenUpdating = False Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.navigate "https://gls.azmd.gov/glsuiteweb/clients/azbom/public/WebVerificationSearch.aspx" Application.StatusBar = "Submitting" While IE.Busy DoEvents Cells(i, 1).Select Selection.Copy Wend '********************************************************************** With IE.document delay 1 .getelementbyid("tbFileNumber").Value = Cells(i, 1).Value delay 1 .getelementbyid("btnLicense").Click delay 2 .getelementsbytagname("a")(0).Click End With '********************************************************************** 

代码完全是我想要做的,直到这一点。

现在,下面是我想要转换的数据的HTML样式:

 <span id="dtgGeneral_ctl02_lblLeftColumnEntName"><b>Gabby Laub MD</b><br /></span> <span id="dtgGeneral_ctl02_lblLeftColumnPracAddr"><br />1234 S Pine<br />Scottsdale AZ 85258<br />Phone: (123) 456-7891<br /></span> 

我需要能够将姓名(Gabby Laub)放入Cell(i,2),地址部分1(1234 s Pine)到Cell(i,3),地址部分2(Scottsdale,AZ) ,4)和电话号码分配给小区(i,5)。

我正在做这样的事情:

 Set Name = IE.document.getelementbyid("dtgGeneral_ctl02_lblLeftColumnEntName").innerHTML 

但它根本不起作用。 我一直在做这个项目好几个星期,我真的很感激一些帮助。 很明显,我知道我缺less下一个我和结束分。

再一次,我需要帮助的部分是如何实际获取数据到Excel中。

谢谢!

你可以尝试像这样:

 Cells(i, 2).Value = IE.document.getelementbyid("dtgGeneral_ctl02_lblLeftColumnEntName").getelementsbytagname("b").innerText Cells(i, 3).Value = IE.document.getelementbyid("dtgGeneral_ctl02_lblLeftColumnPracAddr").innerText 

由于地址1,地址2和电话都将位于单元格(i,3)中,因此您可能需要使用文本列来将其拆分为相应的列。

另外,如果你正在做一个更大的search,你可以创build一个数组来存储这些数据。 然后,可以在完成刮取后将数组值粘贴到其单元格中,如下所示:

 searchInfo(i, 1) = IE.document.getelementbyid("dtgGeneral_ctl02_lblLeftColumnEntName").getelementsbytagname("b").innerText searchInfo(i, 2) = IE.document.getelementbyid("dtgGeneral_ctl02_lblLeftColumnPracAddr").innerText 

然后在循环之后:

  For i = 1 to last row Cells(i,2).Value = searchInfo(i, 1) Cells(i,3).Value = searchInfo(i, 2) Next i 

你仍然有文字到专栏的问题,但可以用循环中的一些代码很容易地解决。 细节只取决于第三栏的价值是如何出现的。

编辑:根据您的意见下面,这对我工作。 这可能需要一些定制,但这是这个想法。

  ' remove .getelementsbytagname("a")(0).Click and replace with this .location = .getElementsByTagName("a").getAttributes("href")