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

如何使用Selenium / Python获取由JavaScript编写的html内容[重复]

隆璞
2023-03-14
问题内容

这个问题已经在这里有了答案

使用Python在Selenium
WebDriver中获取WebElement的HTML源代码
(15个答案)

6年前关闭。

我正在使用Selenium进行网络爬网,我想在Selenium模拟点击假链接后获得由JavaScript编写的元素(例如链接)。

我尝试了get_html_source(),但其中不包含JavaScript编写的内容。

我写的代码:

    def test_comment_url_fetch(self):
        sel = self.selenium 
        sel.open("/rmrb")
        url = sel.get_location()
        #print url
        if url.startswith('http://login'):
            sel.open("/rmrb")
        i = 1
        while True:
            try:
                if i == 1:
                    sel.click("//div[@class='WB_feed_type SW_fun S_line2']/div/div/div[3]/div/a[4]") 
                    print "click"
                else:
                    XPath = "//div[@class='WB_feed_type SW_fun S_line2'][%d]/div/div/div[3]/div/a[4]"%i
                    sel.click(XPath)
                    print "click"
            except Exception, e:
                print e
                break
            i += 1
        html = sel.get_html_source()
        html_file = open("tmp\\foo.html", 'w')
        html_file.write(html.encode('utf-8'))
        html_file.close()

我使用while循环单击一系列伪造的链接,这些伪造的链接触发js动作以显示额外的内容,而该内容正是我想要的。但是sel.get_html_source()没有提供我想要的东西。

有人可以帮忙吗?非常感谢。


问题答案:

由于我通常在获取的节点上进行后处理,因此我直接在浏览器中使用运行JavaScript execute_script。例如,获取所有a-tag:

js_code = "return document.getElementsByTagName('a')"
your_elements = sel.execute_script(js_code)

编辑:execute_scriptget_eval是等效的,除了get_eval执行隐式返回,execute_script必须明确声明它。



 类似资料:
  • 问题内容: 我正在使用Selenium进行网络爬网,我想在Selenium模拟点击假链接后获得由JavaScript编写的元素(例如链接)。 我尝试了get_html_source(),但其中不包含JavaScript编写的内容。 我写的代码: 我使用while循环单击一系列伪造的链接,这些伪造的链接触发js操作以显示额外的内容,而该内容正是我想要的。但是sel.get_html_source()

  • 我有上面的编码来提取使用硒 - 蟒蛇的href链接。我想提取每个人的个人资料“董事会成员”中的内容。我知道如何逐个提取它们,但不知道如何编写循环来执行此操作。 以下是我的代码: 任何想法都很感谢!

  • 我的GUI中有一个显示连接状态的显示按钮(带绿色检查的按钮表示连接已建立,带红色表示没有连接)我必须使用我的代码检查状态。我正在解析该特定标题栏类名(容器流体)的内容。由此,我正在解析该显示按钮的显式内容。 在此之后,我解析该按钮的一些显式内容,并确定连接是否存在。 但是如果我使用class="powerOn icon-ok-sign ",我会得到错误: 不允许使用复合类名

  • 问题内容: 我已经使用iText将表格内容导出为pdf。 这是我的代码: JSP: Servlet: 用过itextpdf-5.1.0.jar这是我的JSP页面。 从jsp获取字符串时, 我得到的内容与表td tr…相同,而不是实际值。 有什么帮助吗? 问题答案: 请看一下示例ParseHtmlTable1和ParseHtmlTable2。 他们创建以下PDF:html_table_1.pdf 和

  • 在node环境中,使用request爬取一个网页时,响应的body编码异常? 代码如下: 浏览器中的响应: 实际打印结果: 实际打印部分内容:�z<[��zml�1;��g���J��4�~b��J��6^M=i���F}�\�e�ž�������������e�Lc�1Ӟ��M�ή�ׅFm:�=^㱩ZkG��l/L�T⏃���ͱ&�=,0���sc��������B}do�՘�ŅFs�ze�9^

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