2017-09-24 3 views
1

FirefoxでPythonでSeleniumを実行していますが、リストのキーワードからページ上のElementsと一致させようとしています。Python Selenium:Webページの本文から特定の文字を削除します

要素検索が成功するには、Webページで®や™のような特殊文字を取り除く必要があります。私は残念なことに、そのような文字がいつ使われるかを予測することができないため、問題の「キーワード終了」にそれらを追加することはできません。

SeleniumやFirefox自体がウェブページから不要な文字を削除することはできませんが、SeleniumにJavaScriptを実行させてその文字を削除させることを考えました。それは可能ですか?ドライバがページを「読んで」とfind_elementしようとする前に交換が起こるはず

driver.execute_script("document.body.innerHTML.replace(/®/g, '');") 

:このおそらく非稼働、擬似コードのような

何か。

FYI私が取り除きたい文字は、 text()のノードにあり、ドキュメント本体のセルには<td>個のセルがあります。

答えて

1

ASCIIは0〜127の範囲にあるので、あなたはそれをこのように行うことができます。

document.body.innerHTML.replace(/(®)/, ''); 
+0

これは働いていた:あなたはこのようにそれを行うことができます®のみ削除したい場合は

document.body.innerHTML.replace(/[^\x00-\x7F]/g, ''); 

を$( 'body').html(置き換えられた); ")私のために:' driver.execute_script( "var replaced = $( 'body'); '、からこの[スレッド](https://stackoverflow.com/a/10550100/4909923)あなたの助けを借りてください。 – Winterflags

+0

私はそれがずっと短くて簡単に読むことができると思う: 'driver.execute_script(" document.body.innerHTML.replace(/(®)/、 ''); ")' – mostaszewski

+0

私はあなたに同意します。しかし、Chrome Javascriptコンソールでそのコマンドを実行すると、ページを再表示しませんでした(応答コンソールでHTML出力が表示される可能性があります)。多分私は何かを欠いているでしょうか? – Winterflags

関連する問題