2013-06-21 69 views
0

我正在使用Selenium和Python構建web爬網程序,並且遇到了一些障礙。履帶式工作原理是利用在Python中使用Selenium屏幕抓取:使用Javascript構建的鏈接

ListlinkerHref = self.browser.find_elements_by_xpath("//*[@href]")

找到的所有鏈接並遍歷ListlinkerHref。這適用於帶有href屬性的經典鏈接。但是,快速查看www.primitiveworldproductions.com主頁的第110行和第135行(大約)的源代碼,可以看到使用Javascript構建的一堆鏈接,並且沒有href屬性。

我完全不瞭解Javascript,我翻閱了Selenium文檔,但找不到檢測這些鏈接的方法。有沒有一種健壯的,包羅萬象的方式來查找源代碼中的所有鏈接,包括那些沒有href屬性的JavaScript構建的鏈接?請注意,我的抓取工具通過點擊鏈接無法工作(它只是將它們添加到列表中以便稍後打開),並且抓取工具需要能夠抓取任何網站,而不考慮具體情況。這可能嗎?

編輯:

下面是從所涉及的源代碼的一部分的前幾行。

var n111 = menuMgr.createMenu("ref111"); 

n111.addItem("126", "Staff Bios", "/staff.aspx", ["systems/nlsmenu/img/submenuovr.gif","systems/nlsmenu/img/submenuovr.gif"], true, null, "ref126"); 

var n112 = menuMgr.createMenu("ref112"); 

n112.addItem("146", "Promotional Video", "/PromotionalVideo.aspx", ["systems/nlsmenu/img/submenuovr.gif","systems/nlsmenu/img/submenuovr.gif"], true, null, "ref146"); 

n112.addItem("120", "Video for Social Media", "/vsm.aspx", ["systems/nlsmenu/img/submenuovr.gif","systems/nlsmenu/img/submenuovr.gif"], true, null, "ref120"); 

n112.addItem("147", "Live Webcasting and Event Video", "/Webcasting.aspx", ["systems/nlsmenu/img/submenuovr.gif","systems/nlsmenu/img/submenuovr.gif"], true, null, "ref147"); 
+0

你能複製粘貼什麼「110至135(大約)」 – Amey

+0

這裏有一個。他們都是完全相同主題的變體。 (我只在這裏包括一個,否則它看起來像是地獄。) n112.addItem(「148」,「Educational Programming」,「/Education.aspx」,[「systems/nlsmenu/img/submenuovr.gif」 ,「systems/nlsmenu/img/submenuovr.gif」],true,null,「ref148」); 編輯:上下文可能有幫助:基本上它是構建一個導航菜單,並添加項目。以上是其中一項。 – Tyler

回答

0

如果你在菜單的任何項目鼠標右鍵點擊鏈接,然後選擇「檢查元素」,你會看到這是使用JavaScript生成的HTML代碼。您會看到primitiveworldproductions.com上的菜單項目沒有href屬性,並且onclick事件中的鏈接目標加載。恐怕沒有簡單的方法從這個菜單中提取鏈接。