javascript - 无法修复网页上的 VBA 爬网错误

标签 javascript html ms-access vba web-crawler

网站:http://www.cookcountypropertyinfo.com/default.aspx . 我想自动化在“BY PIN”部分输入值的过程,然后提交“搜索”按钮。下面提到的代码填充到“BY PIN”部分,但它未通过验证标准并返回错误消息。但是,手动输入相同的值返回结果。我无法弄清楚我的代码中缺少什么。

Private Sub Command443_Click()
Dim PINArray() As String
PINArray() = Split(PINText, "-")


Set objie = CreateObject("InternetExplorer.Application")
WebSite = "http://www.cookcountypropertyinfo.com/default.aspx"
DoCmd.Hourglass True
With objie
.Visible = False
.navigate WebSite
Do While .Busy Or .ReadyState <> 4
DoEvents
Loop
.Visible = True
Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox1")
element.Item(0).Value = PINArray(0)
element.Item(0).fireevent "onkeyup"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox2")
element.Item(0).Value = PINArray(1)
element.Item(0).fireevent "onkeyup"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox3")
element.Item(0).Value = PINArray(2)
element.Item(0).fireevent "onkeyup"


Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox4")
element.Item(0).Value = PINArray(3)
element.Item(0).fireevent "onkeyup"


Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$pinBox5")
element.Item(0).Value = PINArray(4)
element.Item(0).fireevent "onkeyup"
element.Item(0).fireevent "onkeydown"

Set element = .Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$btnSearch")
element.Item(0).Click

End Sub

最佳答案

页面上的搜索按钮调用“ValidateSearch”功能; 验证搜索:

function ValidateSearch() {
    var searchToValidate = $('#searchToValidate').val();
    $('#__EVENTARGUMENT').val('btn' + searchToValidate);
    $('#invalidpinaddressmessage').hide();

    if (searchToValidate == "PIN") {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate('pin');
        }
    }
    else if (searchToValidate == "Address") {
        if (typeof (Page_ClientValidate) == 'function') {
            Page_ClientValidate('address');
        }
    }
    else if (searchToValidate == "") {
        $('#invalidpinaddressmessage').show();
        return false;
    }

    if (Page_IsValid) {
        return true;
    }
    else {
        scrollToValidation(60);
        return false;
    }
}

$('#searchToValidate').val() 指的是下面提到的 HTML 隐藏标签

<input type="hidden" 
name="ctl00$ContentPlaceHolder1$PINAddressSearch$searchToValidate" 
id="searchToValidate" />

在我的 vba 代码中,我将输入标签“searchToValidate”的值插入到“PIN”以绕过并提交搜索按钮。

.Document.getElementById("searchToValidate").Value = "PIN"
Set element =.Document.getElementsByName("ctl00$ContentPlaceHolder1$PINAddressSearch$btnSearch")
element.Item(0).Click

关于javascript - 无法修复网页上的 VBA 爬网错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48484791/

相关文章:

javascript - 在Google表格中,如何将A列中的#N/A替换为B列中的相应值

JavaScript for 循环不工作

java - MS Access - 无法打开更多表

java - 正则表达式用于查找两个 HTML 标签之间所有可能的内容(包括外来字符)

c# - OleDBException 错误插入

database - MS Access 2003 - 无法创建 MDE 文件 : error VBA is corrupt?

javascript - 从 jquery/javascript 函数获取数组

javascript - 在 Canvas Cylinder 中动态填充颜色我收到错误消息,因为最大宽度未定义

javascript - 通过替换 <link> 标签将 CSS 文件注入(inject) HTML head

javascript - jQuery - 打开窗口的翅膀效果