在AWS ubuntu服务器上通过python使用selenium来使用javascript(需要渲染完整的html)来抓取动态页面。最后让大多数网站都能正常工作(感谢unable to call firefox from selenium in python on AWS machine),除了一些会不断给我一个“问题加载页面”。
在iPython中:
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
driver= webdriver.Firefox()
actions = webdriver.ActionChains(driver)
以下工作正常(并迅速作出反应):
driver.get('http://www.apple.com/')
print driver.title
>> Apple
driver.get('http://www.orange.com/')
print driver.title
>> Orange.com: Corporate Website of Orange
但是以下滞后2-3分钟,然后最终返回时出现问题加载页面:
driver.get('http://www.trivago.com/')
print driver.title
>> Problem loading page
以下是有关驱动程序属性的更多信息,如果有帮助的话:
{'_is_remote': False,
'binary': <selenium.webdriver.firefox.firefox_binary.FirefoxBinary at 0x296d590>,
'capabilities': {u'acceptSslCerts': True,
u'applicationCacheEnabled': True,
u'browserConnectionEnabled': True,
u'browserName': u'firefox',
u'cssSelectorsEnabled': True,
u'databaseEnabled': True,
u'handlesAlerts': True,
u'javascriptEnabled': True,
u'locationContextEnabled': True,
u'nativeEvents': True,
u'platform': u'Linux',
u'rotatable': False,
u'takesScreenshot': True,
u'version': u'26.0',
u'webStorageEnabled': True},
'command_executor': <selenium.webdriver.firefox.extension_connection.ExtensionConnection at 0x296d6d0>,
'error_handler': <selenium.webdriver.remote.errorhandler.ErrorHandler at 0x7f14f4d4bf50>,
'profile': <selenium.webdriver.firefox.firefox_profile.FirefoxProfile at 0x2418cd0>,
'session_id': u'ece53830-2b9d-4a32-b692-777602190d0c'}
当我在本地执行相同的代码(通过Mac上的终端)时,相同的网址所有都能正常工作。