簡體   English   中英

HtmlUnit webscraping Anchor 標簽,帶有帶有 JavaScript 的下拉鏈接

[英]HtmlUnit webscraping Anchor tag with dropdown link that has JavaScript

當您將鼠標懸停在初始鏈接上時,當該鏈接具有鏈接下拉列表時,是否可以使用 HtmlUnit 單擊該鏈接。 如果您單擊初始鏈接,除了鼠標懸停時會下拉的鏈接列表之外,什么都不會發生。 我想單擊下拉鏈接之一並抓取與該鏈接關聯的網頁。

問題似乎是 Anchor 有 JavaScript,而且它是一個下拉列表。 如果 Anchor 沒有 JavaScript 並下拉,那么我不會有任何問題。

這是相關的 JavaScript 代碼:

<script language='JavaScript' type='text/javascript'>
<!--
function mmLoadMenus(){
 window.mm_menu_0805151542_0 = new Menu("root",211,23,"Arial, Helvetica, sans-serif",11,"#FFFFFF","#FFFFFF","#056CB9","#014D98","left","middle",3,0,1000,-5,7,true,false,true,2,true,false);
  mm_menu_0805151542_0.addMenuItem("View&nbsp;Tax&nbsp;Sales","window.open('TCTaxSaleBrief.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
  mm_menu_0805151542_0.addMenuItem("Registration&nbsp;Renewal&nbsp;Reprint","window.open('vrRenewal.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
  mm_menu_0805151542_0.addMenuItem("Drivers&nbsp;License","window.open('http://www.dds.ga.gov/', '_blank');");
  mm_menu_0805151542_0.addMenuItem("Online&nbsp;Tag&nbsp;Renewals","location='../TaxCommissioner/TagRenewal.html'");
   mm_menu_0805151542_0.hideOnMouseOut=true;
   mm_menu_0805151542_0.bgColor='#CCCCCC';
   mm_menu_0805151542_0.menuBorder=0;
   mm_menu_0805151542_0.menuLiteBgColor='#FFFFFF';
   mm_menu_0805151542_0.menuBorderBgColor='#015BA7';

</script>

這是相關的錨點:

<a href="#" name="link11" class="nav" id="link10" onmouseover="MM_showMenu(window.mm_menu_0805151542_0,104,0,null,'link11')" onmouseout="MM_startTimeout();">Online Services</a><br />

這是我用來完成這項工作的 Java 代碼片段。

WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
    String webPage="http://website.html";
    try {
        HtmlPage taxComPage = webClient.getPage(webPage);
        HtmlElement htmlElement = taxComPage.getDocumentElement();
            //HtmlAnchor anchor = taxComPage.getAnchorByText("View Tax Sales");
        //HtmlAnchor htmlAnchor = taxComPage.getHtmlElementById("link10");
        HtmlAnchor anchor = taxComPage.getAnchorByText("Online Services"); 

        HtmlPage page = anchor.click();
    }catch

如果 HtmlUnit 不適用於 JavaScript,請告訴我!

謝謝

我知道有一個名為:mmLoadMenus() 的函數,它具有鼠標懸停時顯示的文本,但我對此函數與錨點的關聯有疑問。 在錨點中有一個叫做 MM_showMenu 的東西。 創建它的 MM_showMenu 是什么,這是一個 JavaScript 關鍵字,我沒有看到它在任何地方被定義。 我已經搜索了整個頁面,唯一提到的地方是在錨點中。 它似乎是某種類型的函數,其參數為:window.mm_menu_0805151542_0,104,0,null,'link11' 被傳遞給它。 我可以在函數 mmLoadMenus() 和錨點之間建立的唯一聯系是錨點中包含 mm_menu_0805151542_0。 我不太精通 JavaScript 也許這就是為什么我沒有與 JavaScript 函數和錨點建立牢固的聯系。

數據已經在頁面上,所以為什么不從 JavaScript 函數本身抓取它。 只是解析文本的問題 - 比試圖強制加載要容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM