目标:
我正在尝试使用无头浏览器在Python中执行一些抓取:使用PhantomJs和GhostDriver的Selenium。
我在运行Mavericks的Mac上使用Python 2.7。我在emacs中工作(虽然它也没有在终端上工作)。 我已经克服了一些错误,例如“phantomjs - 没有这样的文件或目录存在”,但是得到了来自here的最新二进制文件,它们是最新的,包括来自官方PhantomJS团队的未决补丁。 / p>
我的测试脚本:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
desired_cap = {
'phantomjs.page.settings.loadImages' : True,
'phantomjs.page.settings.resourceTimeout' : 10000,
'phantomjs.page.settings.userAgent' : "my_user_agent"
}
driver = webdriver.PhantomJS(executable_path= "/usr/local/bin/phantomjs", desired_capabilities=desired_cap)
driver.set_window_size(1024, 768)
driver.get('https://google.com/')
driver.save_screenshot("testing.png")
driver.page_source("source_code.txt")
element = driver.find_element_by_xpath('--*[@id=-gbqfq-]')
element.send_keys('testing')
element.send_keys(Keys.ENTER)
以下是webdriver简单说明的链接: http://selenium.googlecode.com/svn/trunk/docs/api/py/webdriver_phantomjs/selenium.webdriver.phantomjs.webdriver.html
错误讯息:
我尝试了什么:
我在尝试实际执行更复杂的任何操作之前从教程中提取了一个简单的示例,但仍然会出错。一个tutorial ... a second
我对phantomjs service.py
文件做了最后一次更改,我找到了here。也就是说,我改变了:
self.process = subprocess.Popen(self.service_args,
stdout=self._log, stderr=self._log)
:
self.process = subprocess.Popen(['/usr/bin/env', 'phantomjs', '--webdriver=59202'])
对于我没有经验的眼睛来说,最后的争论--webdriver
似乎相当武断。我认为它可能与ghostdriver使用的端口相关,后者在ghostdriver.log
每次运行后显示,并且每次都不同。因为它每次都会改变,所以我认为使用它在代码中保持静态是有意义的 - 并且在尝试之后,它不起作用。
问题:
有没有人对连接被拒绝的原因有任何想法?