2017-09-24 27 views
1

我在Python中使用Firefox運行Selenium,並試圖在列表中的關鍵字上匹配網頁上的元素。Python Selenium:刪除網頁主體中的某些字符

爲了讓元素查找成功,我需要去除網頁上的一些特殊字符,如®和™。很遺憾,我無法預測何時會使用這些字符,因此我無法將它們添加到問題的「關鍵字結尾」。

我不認爲Selenium或Firefox本身可以從網頁中刪除不需要的字符,但我的想法是讓Selenium在頁面上執行JavaScript並刪除這些字符。那可能嗎?

像這樣的事情想必非工作,僞代碼:

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

司機試圖之前更換應該發生「讀」的頁面和find_element

僅供參考我想擺脫的字符在 text()節點<td>整個文檔正文的單元格。

回答

1

ASCII是在0至127範圍內,所以你可以這樣說:如果你想®你可以這樣來做,只除去

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

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

這個工作對我來說:'driver.execute_script(「var replaced = $('body')。html()。replace(/(®)/ g,''); $('body')。html(replaced);」) ',從此[線程](https://stackoverflow.com/a/10550100/4909923)與您的幫助。 – Winterflags

+0

我認爲它更短,更容易閱讀: 'driver.execute_script(「document.body.innerHTML.replace(/(®)/,'');」)' – mostaszewski

+0

我同意你的觀點。但是,在Chrome Javascript控制檯中運行該命令時,它不會重新呈現頁面(儘管我可以在響應控制檯中看到HTML輸出)。也許我錯過了什麼? – Winterflags