我正在使用selenium API在使用javascript的网页上进行网络漫图。
是否有一些方法可以在没有Web浏览器屏幕的情况下获取代码?
我是这个API的新手
有可能吗?
答案 0 :(得分:7)
您至少有3个基本选项:
使用无头浏览器,例如PhantomJS
,例如:
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://stackoverflow.com')
>>> driver.title
u'Stack Overflow'
在xvfb
的帮助下使用虚拟展示(参见pyvirtualdisplay
),示例如下:
使用远程selenium服务器,您可以自己在网格中设置自己的节点,也可以使用BrowserStack
或Sauce Labs
:
>>> from selenium import webdriver
>>> from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
>>>
>>> desired_cap = {'os': 'Windows', 'os_version': 'xp', 'browser': 'IE', 'browser_version': '7.0' }
>>> driver = webdriver.Remote(command_executor='http://username:key@hub.browserstack.com:80/wd/hub', desired_capabilities=desired_cap)
>>>
>>> driver.get('http://stackoverflow.com')
>>> driver.title
u'Stack Overflow'
答案 1 :(得分:4)
不幸的是,如果没有解释器,您就无法在浏览器中使用JavaScript。但是,您可以使用PhantomJS - 无头浏览器。
答案 2 :(得分:1)
您可以使用无头浏览器。 例如 http://phantomjs.org/或http://slimerjs.org/
答案 3 :(得分:0)
“是否有某种方法可以在不打开网络浏览器屏幕的情况下获取代码?”-是!
您必须导入Options
。
from selenium import webdriver # for webdriver
from selenium.webdriver.support.ui import WebDriverWait # for implicit and explict waits
from selenium.webdriver.chrome.options import Options # for suppressing the browser
然后输入代码:
option = webdriver.ChromeOptions()
option.add_argument('headless')
driver = webdriver.Chrome(options=option)
并继续执行该程序的其余部分。