[英]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 Tax Sales","window.open('TCTaxSaleBrief.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
mm_menu_0805151542_0.addMenuItem("Registration Renewal Reprint","window.open('vrRenewal.asp', '_blank','width=800,height=580,scrollbars=1,resizable=yes,top=50,left=100');");
mm_menu_0805151542_0.addMenuItem("Drivers License","window.open('http://www.dds.ga.gov/', '_blank');");
mm_menu_0805151542_0.addMenuItem("Online Tag 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.