2013-06-21 35 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事件中的链接目标加载。恐怕没有简单的方法从这个菜单中提取链接。