当前位置: 首页 > 面试题库 >

如何通过使用selenium获取带有javascript呈现源代码的html

陈允晨
2023-03-14
问题内容

我在一个网页上运行查询,然后得到结果URL。如果我右键单击查看html源代码,则可以看到JS生成的html代码。如果我仅使用urllib,则python无法获取JS代码。所以我看到了一些使用selenium的解决方案。这是我的代码:

from selenium import webdriver
url = 'http://www.archives.com/member/Default.aspx?_act=VitalSearchResult&lastName=Smith&state=UT&country=US&deathYear=2004&deathYearSpan=10&location=UT&activityID=9b79d578-b2a7-4665-9021-b104999cf031&RecordType=2'
driver = webdriver.PhantomJS(executable_path='C:\python27\scripts\phantomjs.exe')
driver.get(url)
print driver.page_source

>>> <html><head></head><body></body></html>         Obviously It's not right!!

这是我在右键单击窗口中需要的源代码,(我需要信息部分)

</script></div><div class="searchColRight"><div id="topActions" class="clearfix 
noPrint"><div id="breadcrumbs" class="left"><a title="Results Summary"
href="Default.aspx?    _act=VitalSearchR ...... <<INFORMATION I NEED>> ... 
to view the entire record.</p></div><script xmlns:msxsl="urn:schemas-microsoft-com:xslt">

        jQuery(document).ready(function() {
            jQuery(".ancestry-information-tooltip").actooltip({
href: "#AncestryInformationTooltip", orientation: "bottomleft"});
        });

===========所以我的问题是===============如何获取JS生成的信息?


问题答案:

您将需要通过javascript使用硒execute_script功能来获取文档

from time import sleep # this should go at the top of the file

sleep(5)
html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
print html

这将使所有内容都进入<html>标签内



 类似资料:
  • 问题内容: 我在一个网页上运行查询,然后得到结果URL。如果右键单击查看html源代码,则可以看到JS生成的html代码。如果我仅使用urllib,则python无法获取JS代码。所以我看到了一些使用硒的解决方案。这是我的代码: 这是我在右键单击窗口中需要的源代码,(我需要信息部分) 问题答案: 您将需要通过使用硒功能来获取文档 这将使所有内容都进入标签内

  • 问题内容: JavaScript代码将从www.example.com通过google chrome中的网址栏启动,因此我无法使用jquery。我的目标是当我在www.example.com中启动代码时,将www.example.com/page.html的完整html源代码传递给javascript中的变量。这可能吗?如果可以,怎么办?我知道要获取当前页面源,但我不确定如何做到这一点。我认为可以

  • github上有些插件是分为个人版和企业版的,企业版本的说是需要获取许可证,才能用。但是仍然可以直接下载下来,直接使用。 比如这个:AG-grid插件分为社区版和企业版 ,但是企业版本的代码也可以下载。 我的问题: 1.关于此类需要授权的代码,获取官方的许可后,是要怎么使用他的代码?在哪里注明? 2.如果直接使用它的代码用在公司的内部系统,被发现会怎么样?

  • 我如何从我检查的源(如图像所示)中刮取输入标记的值属性中的数据? 我试过使用BeautifulSoup和Selenium,但它们对我都不起作用。 部分代码如下: 这将返回错误。 事实上,当我尝试时,很多源代码数据似乎丢失了。我怀疑这可能是与JS相关的问题,但是Selenium--它大部分时间都在呈现JS--在这个站点上对我不起作用。知道为什么吗? 我也试过这些: 返回,而返回源,其中大部分输入标记

  • 问题内容: 我正在使用一些房屋更换产品,使我可以隐藏通知栏,而这正是我真正喜欢的东西。 所有信息都可以用一些小部件代替,但是我也想显示通知。 当我已经开发了一些应用程序时,我想知道是否存在允许应用程序获取所有通知的命令行。我打算将此添加到小部件或烤面包。 非常感谢您提供任何线索或帮助。 问题答案: 从Android API级别18(Android 4.3)开始,提供了一个类 Notificatio

  • 问题内容: 我已经使用Selenium2 / WebDriver编写了测试,并且想要测试HTTP请求是否返回HTTP 403 Forbidden。 是否可以使用Selenium WebDriver获取HTTP响应状态代码? 问题答案: 一言以蔽之。无法使用Selenium WebDriver API。此问题已在项目的问题跟踪器中进行了讨论,该功能不会添加到API中。