无需打开浏览器即可在selenium中读取javascript代码

时间:2015-01-22 13:47:51

标签: javascript python selenium selenium-webdriver web-scraping

我正在使用selenium API在使用javascript的网页上进行网络漫图。

是否有一些方法可以在没有Web浏览器屏幕的情况下获取代码?

我是这个API的新手

有可能吗?

4 个答案:

答案 0 :(得分:7)

您至少有3个基本选项:

  • 使用无头浏览器,例如PhantomJS,例如:

    >>> from selenium import webdriver
    >>> driver = webdriver.PhantomJS()
    >>> driver.get('http://stackoverflow.com')
    >>> driver.title
    u'Stack Overflow'
    
  • xvfb的帮助下使用虚拟展示(参见pyvirtualdisplay),示例如下:

  • 使用远程selenium服务器,您可以自己在网格中设置自己的节点,也可以使用BrowserStackSauce 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)

并继续执行该程序的其余部分。