2012-10-18 31 views
2

我剛開始探索selenium,但是它很棒,但是我想編寫一個腳本來使用ELinks來瀏覽網頁。有沒有什麼辦法可以像Python一樣使用python腳本運行python-with selenium webdriver python

隨着硒的webdriver我可以做這樣的事情:

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

#Open firefox 
br=webdriver.Firefox() 
#open website 
br.get('http://python.org') 
#check if website title contains word 
assert 'Python' in br.title 
elem=br.find_element_by_name('q') 
elem.send_keys('selenium') 
elem.send_keys(Keys.RETURN) 
assert 'Google' in br.title 
br.close() 

但如何做類似的任務蟒蛇與Elinks? (或者有可能嗎?)

+0

這是什麼動機?只是想了解更多的需求以更好地回答問題 –

+0

從我的角度來看,ELinks比任何GUI瀏覽器都快,我只想從網頁上獲取一些iformation,我不能使用urllib2或某些庫,如機械化爲此,因爲網站具有非常強大的防機器人保護功能,所以我認爲可以採取的一種方式是讓Elinks進入頁面,然後以某種方式從那裏獲取數據。 – Vor

回答

3

elinks真的很快。您可以使用Lua腳本語言automate elinks。他們的文檔中有example scripts。你也可以嘗試pexpect這是一個非常好的方式來自動化python中的終端應用程序。下面的腳本使用pexpect來完成與問題中的示例相同的任務。它將訪問python.org,搜索硒,將搜索結果保存到文件,然後退出elinks。

from pexpect import spawn 
import time 
import datetime 

KEY_UP = '\x1b[A' 
KEY_DOWN = '\x1b[B' 
KEY_RIGHT = '\x1b[C' 
KEY_LEFT = '\x1b[D' 
KEY_ESCAPE = '\x1b' 
KEY_BACKSPACE = '\x7f' 

child = spawn('elinks http://python.org') 
print 'waiting for python.org to load' 
child.expect('Python') 
time.sleep(0.1) 
print 'doing selenium search' 
child.sendline('/advanced search') 
child.sendline(KEY_UP * 2) 
child.sendline('selenium') 
child.sendline('') 
print 'waiting for search results' 
child.expect('Google Search') 
time.sleep(0.1) 
print 'saving html' 
child.send(KEY_ESCAPE) # bring up menu 
child.send(KEY_DOWN + 's') # select save as in menu 
child.send(KEY_BACKSPACE * 100) # remove any file name already in input box 
file = './saved_' + datetime.datetime.now().strftime('%H%M%S') + '.html' 
child.sendline(file) 
#child.interact() #uncomment to interact with elinks, good for debugging 
print 'quiting' 
child.sendline('q') 
child.wait() 
+0

謝謝我認爲這就是我所尋找的 – Vor

+1

我用pexpect腳本更新了答案,可以自動化elinks –

+0

不錯的例子!我已經喜歡這個圖書館。再次感謝您 – Vor

0

硒有一個無頭瀏覽器選項,htmlunit。 htmlunit仍然沒有一個完整的javascript實現,但它有很多 - 你可以使用它,直到它休息。

或者,Chrome瀏覽器非常快,無論如何。我爲我的webdriver自動化使用chrome,Chrome速度足夠快,以至於如果我沒有正確編寫時序,我最終會遇到端口耗盡的問題。

+0

謝謝你的回答我會檢查這個。 – Vor

相關問題