Python中的Selenium屏幕抓取:Javascript构建的链接

Python中的Selenium屏幕抓取:Javascript构建的链接,javascript,python,selenium,screen-scraping,web-crawler,Javascript,Python,Selenium,Screen Scraping,Web Crawler,我正在使用Selenium和Python构建一个webcrawler,我遇到了一些障碍。爬虫通过使用查找所有链接来工作 listLinkerRef=self.browser.通过xpath(“/*[@href]”)查找元素 并在ListLinkerRef上迭代。这对于带有href属性的经典链接非常有效。但是,快速查看www.primitiveworldproductions.com主页第110行和第135行(大约)之间的源代码,可以看到大量使用Javascript构建的链接,其中没有href属性

我正在使用Selenium和Python构建一个webcrawler,我遇到了一些障碍。爬虫通过使用查找所有链接来工作

listLinkerRef=self.browser.通过xpath(“/*[@href]”)查找元素

并在ListLinkerRef上迭代。这对于带有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");

如果用鼠标右键单击菜单中的任何项目,然后选择“inspect element”,您将看到使用JavaScript生成的HTML代码。您将看到primitiveworldproductions.com上的菜单项没有href属性,并且在onclick事件中加载链接的目标。恐怕没有简单的方法可以从这个菜单中提取链接。

你能复制粘贴“110到135之间(大约)”的内容吗。它们都是完全相同主题的变体。(我在这里只包括一个,因为否则它看起来像地狱。)n112.addItem(“148”,“Educational Programming”,“/education.aspx”,“systems/nlsmenu/img/submenuovr.gif”,“systems/nlsmenu/img/submenuovr.gif”],true,null,“ref148”);编辑:上下文可能会有所帮助:基本上,它是构造一个导航菜单并向其中添加项目。以上是其中一项。