【发布时间】:2018-04-13 22:40:32
【问题描述】:
我不是程序员,但我已经设法在 VBA 中学习了一些东西,但现在在某个网站上我遇到了其他网站上不存在的问题。
应该发生的是页面表单应该用数据完成,单击提交按钮,然后我想从结果页面获取一些数据。
第一阶段工作正常,但似乎无论我做什么,VBA 仍然会在点击提交之前从页面读取数据。
代码是:
Sub VIES2()
'Uruchomienie Internet Explorera i wstrzymanie dalszej akcji aż uzyska stan gotowości
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://ec.europa.eu/taxation_customs/vies/?locale=pl"
Do While IE.ReadyState <> 4: DoEvents: Loop
'Wypełnienie formularza odpowiednimi wartościami i kliknięcie przycisku sprawdzenia
IE.document.getElementbyId("countryCombobox").Value = "IT"
IE.document.getElementbyId("number").Value = "01802840023"
IE.document.getElementbyId("requesterCountryCombobox").Value = "IT"
IE.document.getElementbyId("requesterNumber").Value = "01802840023"
IE.document.getElementbyId("submit").Click
'Test uzyskiwania opisu i identyfikatora zapytania
For t = 1 To 999999
Next t
Application.Wait Now + TimeValue("00:00:10")
Do While IE.ReadyState <> 4: DoEvents: Loop
For t = 1 To 999999
Next t
Application.Wait Now + TimeValue("00:00:10")
MsgBox IE.LocationURL
Set Text = IE.document.getElementsbyClassName("layout-content")
For Each Element In Text
MsgBox Element.innerText
Next
Set Test = IE.document.getElementsbyTagName("TABLE")
For Each Element In Test
MsgBox Element.innerText
Next
End Sub
我已尝试按照类似问题中的建议将中断、各种等待循环和 Application.Wait 放在似乎有效的地方。在这里,即使页面在完全加载后很长时间后,代码仍然会读取旧页面 - 至少拉取 URL 并且一些数据似乎表明是这种情况。
更新:我还应该补充一点,我试图让宏刷新页面,但它会清除输入内容。目标 URL 的有趣之处在于:
http://ec.europa.eu/taxation_customs/vies/vatResponse.html
如果我将初始页面更改为此,浏览器会立即重定向到原始页面,并通知需要初始数据。然后宏完成数据并单击提交按钮。在这种情况下 IE.LocationURL 表示这个 URL:
http://ec.europa.eu/taxation_customs/vies/vatResponse.html
但根据我使用 getElementsbyClassName 得到的内容,仍然会从初始页面读取元素:
【问题讨论】:
-
你想从目标页面抓取什么?
-
该页面验证给定的税号是否为有效税号。在肯定验证的情况下:Tak, numer VAT aktywny
Identyfikator zapytania WAPIAAAAWK-ftvgN 如果是否定验证:Nieważny numer VAT dla transakcji transgranicznych w obrębie UE (więcej informacji można znaleźć w „Najczęściej zadawanych pytaniach” – pytania 7, 11, 12, 13我 20). -
为什么要粘贴
html elements?只需尝试粘贴可见文本的部分。顺便说一句,当你的脚本遇到新页面时,我没有看到任何等待。 -
只有这部分
Tak, numer VAT aktywny还是连接到它的表格数据?因为,我可以看到您在脚本中尝试过tagname("table")。 -
取决于结果文本“Tak, numer VAT aktywny”,然后是唯一的搜索标识号,即“WAPIAAAAWK-iaFNr”或只是 Nieważny numer VAT dla transakcji transgranicznych w obrębie UE (więcej informacji można znaleźć w “Najczęściej zadawanych pytaniach” – pytania 7, 11, 12, 13 i 20)。此时的脚本不是针对目标内容 - 最初我只是尝试如何达到目标(我正在学习 VBA)但意识到我得到的内容与屏幕上实际显示的内容完全不同HTML。
标签: html vba excel web-scraping