2013-11-14 76 views
0

我正在尝试从以下网页中提取数据。使用VBA将数据从网页提取到Excel

https://pro.calnea.com/login

用户:[email protected]

通行证:calnea1

一旦登录胡佛在 “专业服务”,然后点击 “搜索谱曲(照片)”。我已经输入了一个邮政编码并勾选了一些属性,这些属性应该将它们放入候选名单中。要访问短名单,请点击页面底部右侧的按钮,显示“查看候选名单”,点击。现在您可以看到选定的属性,并且我想要为每个属性提取每个数据,例如单元格A1 =地址,A2 =最后的销售价格,A3 =最后的销售日期等等。然后在下一行的下一个属性,所以B1 =地址等。如果可能我想获得图像的URL。

我不知道最好的解决办法,因为有一个登录,但我仍然登录在浏览器中,所以我认为这不是一个问题?

以下是我到目前为止,但不幸的是我没有运气和帮助将非常感谢! :)

Sub test() 
Dim eRow As Long 
Dim ele As Object 
Set sht = Sheets("Sheet1") 
RowCount = 1 
sht.Range("A" & RowCount) = "Address" 
sht.Range("B" & RowCount) = "Last Sales Price" 
sht.Range("C" & RowCount) = "Last Sales Date" 
sht.Range("D" & RowCount) = "Property Type" 

eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

Set objIE = CreateObject("InternetExplorer.Application") 


With objIE 
.Visible = True 
.navigate "http://pro.calnea.com/client/cmp_shortlist/bs6?Require_EA=false&SearchMode=CMP" 
Do While .Busy Or _ 
.readyState <> 4 
DoEvents 
Loop 
Set what = .document.getElementsByName("q") 
what.Item(0).Value = Address 
Set Address = .document.getElementsByName("where") 
Address.Item(0).Value = Last Sales Price 
.document.getElementById("View Shortlist").Click 
Do While .Busy Or _ 
.readyState <> 4 
DoEvents 
Loop 
For Each ele In .document.all 
Select Case ele.classname 
Case "Result" 
RowCount = RowCount + 1 
Case "Title" 
sht.Range("A" & RowCount) = ele.innertext 
Case "Company" 
sht.Range("B" & RowCount) = ele.innertext 
Case "Location" 
sht.Range("C" & RowCount) = ele.innertext 
Case "Description" 
sht.Range("D" & RowCount) = ele.innertext 
End Select 
Next ele 
End With 
Macro1 
Set objIE = Nothing 
End Sub 
+2

非常不好的做法发布您的信息登录本网站,我已经删除它为您的利益。 – Sorceri

+0

@Sorceri事实上,你提到你删除它,现在有人可以看到编辑[历史](http://stackoverflow.com/posts/19984280/revisions)不是我会用别人的密码,但只是说它不完全除去。 –

+0

尽我所能去除它,这是我所能做的,帮助他们。没有人应该将他们的信息发布到公共场所。如果你不会发布这个链接,它可能仍然是一种隐藏,但现在任何人都可以看看你的链接! – Sorceri

回答

1

我看到从Fetch data from zoopla.co.uk的联系,我只是纠正了一些VBA语法错误,请检查:

Sub sofFetchDataFromWebPage() 
    Dim RowCount, eRow As Long 
    Dim sht, ele As Object, what, Address 
    Dim objIE 

' 
    Set sht = Sheets("Sheet1") 
' 
' Set sht = ActiveSheet 

    RowCount = 1 
    sht.Range("A" & RowCount) = "Address" 
    sht.Range("B" & RowCount) = "Last Sales Price" 
    sht.Range("C" & RowCount) = "Last Sales Date" 
    sht.Range("D" & RowCount) = "Property Type" 

    eRow = sht.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

    Set objIE = CreateObject("InternetExplorer.Application") 

    With objIE 
    .Visible = True 
    .Navigate "http://pro.calnea.com/client/cmp_shortlist/bs6?Require_EA=false&SearchMode=CMP" 
    Do While .Busy Or .readyState <> 4 
     DoEvents 
    Loop 
    Set what = .document.getElementsByName("q") 
    what.Item(0).Value = "Address" 
    Set Address = .document.getElementsByName("where") 
    Address.Item(0).Value = "Last Sales Price" 
    .document.getElementById("View Shortlist").Click 
    Do While .Busy Or .readyState <> 4 
     DoEvents 
    Loop 
    For Each ele In .document.all 
     Select Case ele.classname 
     Case "Result" 
      RowCount = RowCount + 1 
     Case "Title" 
     sht.Range("A" & RowCount) = ele.innertext 
     Case "Company" 
      sht.Range("B" & RowCount) = ele.innertext 
     Case "Location" 
      sht.Range("C" & RowCount) = ele.innertext 
     Case "Description" 
      sht.Range("D" & RowCount) = ele.innertext 
     End Select 
    Next 
    End With 
    Set objIE = Nothing 
End Sub 

正如你在另外的IE窗口登录,您可能不需要做再次登录。

+0

感谢您查看代码。我已经点亮了我需要为每个属性采集的信息,并粘贴到Excel的每一行上,但是代码无法正常工作。我只要求它获得四条数据,直到我找到它才能保持简单,但最终的结果是获取每一行上每个属性的所有信息。任何帮助,这将是伟大的。谢谢[链接](http://s13.postimg.org/58f585ihj/CAlnea.png) – user2964645

+0

任何想法? – user2964645

+1

您应该研究返回的HTML文档结构以查看类名,标记名,属性以确定获取数据的策略。 – jacouh

相关问题