【发布时间】:2015-03-21 08:06:33
【问题描述】:
我正在使用 selenium API 使用 javascript 在页面上进行 webcrapping。
有什么方法可以在不打开网络浏览器屏幕的情况下获取代码?
我是这个 API 的新手
有可能吗?
【问题讨论】:
标签: javascript python selenium selenium-webdriver web-scraping
我正在使用 selenium API 使用 javascript 在页面上进行 webcrapping。
有什么方法可以在不打开网络浏览器屏幕的情况下获取代码?
我是这个 API 的新手
有可能吗?
【问题讨论】:
标签: javascript python selenium selenium-webdriver web-scraping
您至少有 3 个基本选项:
使用无头浏览器,例如PhantomJS,例如:
>>> from selenium import webdriver
>>> driver = webdriver.PhantomJS()
>>> driver.get('http://stackoverflow.com')
>>> driver.title
u'Stack Overflow'
在pyvirtualdisplay 的帮助下使用虚拟显示(参见xvfb),示例如下:
使用远程 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'
【讨论】:
不幸的是,如果没有浏览器中的解释器,您将无法使用 JavaScript。不过,您可以使用 PhantomJS - 无头浏览器。
【讨论】:
您可以使用无头浏览器。 例如 http://phantomjs.org/ 或 http://slimerjs.org/
【讨论】:
“有什么方法可以在不打开网络浏览器屏幕的情况下获取代码吗?”- 是的!
你必须导入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)
然后继续程序的其余部分。
【讨论】: