簡體   English   中英

執行完Javascript代碼后如何替換整個頁面?

[英]How to replace entire page after Javascript code done executing?

我正在使用JS腳本在頁面上運行一些計算。 然后,我使用硒從results div中抓取文本。

results = json.loads(driver.find_element_by_id("results").text)

我非常希望避免使用硒而是使用requests

results = json.loads(get(<url goes here>).text)

為了實現這一點,我需要以某種簡單的JSON字符串(無HTML標記)的形式用結果替換整個頁面(包括JS)。 換一種說法:

<html>
    <head>
    ...
    </head>
    <body>
        <div id="results">{"blah":"1234", "test":"4567", ...}</div>
    ...
    <script>
    ...
    </script>
    </body>
</html>    

成為適合get(...).text的純文本字符串

{"blah":"1234", "test":"4567", ...}

該字符串由頁面加載后運行的JS代碼修改。 這意味着必須先存儲結果,然后將其用於創建一個沒有任何HTML或JS的全新頁面。 原始頁面將完全替換自身。

一種替代方法是使用JS替換整個<html>...</html>塊,然后擦除自身。

不確定是否可行。

是的,我可能會使用類似:

page = get(<url goes here>)
page.json()
...

我希望找到一種從結果中刪除所有內容的方法。

使用python作為硒部分。

編輯1:

這是顯示頁面工作方式的代碼。

https://jsfiddle.net/pkLu7uqz/

這個想法的最終結果是頁面只包含JSON字符串。 根本沒有HTML,CSS,JS。 僅一行文本。

您可以在JavaScript中使用document.write 如果在頁面加載后調用它,則所有內容都將替換為您編寫的內容。

在JavaScript上運行計算,然后使用document.write編寫結果。 唯一的是,您將需要異步調用它,以便頁面在被調用時已完成加載。 否則,它只會將文本附加到文檔中(腳本之后)。

一種簡單的方法是使用setTimeout調用它:

<html>
   <head>
      ...
   </head>
   <body>
      ...
      <script>
         // run calculations here
         ...

         // get the results into a variable
         results = RESULT_OF_THE_CALCULATIONS;

         // write the variable using a setTimeout of 1 millisecond
         setTimeout('document.write(results)', 1);
      </script>
   </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM