我使用Python + Selenium + Splinter + Firefox來創建交互式網絡爬蟲。python中的Firefox + Selenium:如何交互式獲取元素html?
python腳本提供了選項,然後Selenium打開Firefox併發送一些命令。
現在,我需要讓python腳本知道用戶想要與之交互的web元素。
的方法我目前使用的是:
右鍵單擊該項目的網站(火狐),點擊「檢查 元素」,然後單擊Firefox的檢查,請單擊「複製HTML',然後 手動將它提供給腳本,然後該腳本能夠繼續。
但是,由於顯而易見的原因,我覺得這個過程遠非完美。
我對JavaScript一無所知,但在閱讀other questions後,我感覺到javascript實際上可能是解決方案。
分裂允許運行JavaScript,拿起返回值到Python腳本,因此,從理論上講:
是否可以運行JavaScript代碼,將返回的下一個元素的HTML代碼的用戶點擊?所以命名爲方法只會右鍵單擊所需的元素?
澄清了Amey的評論:
的Python腳本打開Firefox窗口,其控制仍然從腳本保留。 與分裂,JavaScript代碼可以執行並等待完成/信息返回。 這意味着python腳本可以要求用戶單擊或右鍵單擊它擁有的Firefox窗口,因此目標是啓動一個JavaScript,以「捕捉」用戶點擊哪個元素。
是否足以讓javascript捕捉到所需的元素?
Javascript仍然需要一種方法來查找「下一個需要的元素」,以返回您可以在Selenium中使用的標識符。根據我對你的問題的理解,你可以檢索一個頁面的全部HTML(使用JS或者Selenium),並且使用一些HTML解析器解析它,並且抓取你需要的東西。 – Amey
感謝您的回答。我擴大了描述,因爲我不太清楚情況是否清楚。如果我檢索了整個HTML並解析了結果代碼,我就無法做到我想要的:捕捉用戶點擊某個元素並直接使用該代碼,而無需通過ID,名稱,css專門搜索它,等 –
這看起來很相似,但在不同的上下文中使用:http://stackoverflow.com/questions/17157342/pure-js-detect-if-im-clicking-an-element-within-an-element是那短的解決方案我應該適應我的代碼? –