我已經使用webdriver編寫了一個selenium應用程序。我希望在遠程服務器上運行它。當我通過putty(和Xming)登錄到服務器時,硒會嘗試打開服務器上的瀏覽器,並通過外部顯示器加載頁面。但是在這樣做的時候,如果我只能在本地主機(而不是服務器)上打開瀏覽器,則需要很多時間。是否有可能發生這種事情,或者僅在服務器上打開是唯一的選擇(這是痛苦的緩慢)。請告訴我,我是否也錯過了一些東西。避免在硒調用期間在遠程服務器上打開瀏覽器
在此先感謝。
我已經使用webdriver編寫了一個selenium應用程序。我希望在遠程服務器上運行它。當我通過putty(和Xming)登錄到服務器時,硒會嘗試打開服務器上的瀏覽器,並通過外部顯示器加載頁面。但是在這樣做的時候,如果我只能在本地主機(而不是服務器)上打開瀏覽器,則需要很多時間。是否有可能發生這種事情,或者僅在服務器上打開是唯一的選擇(這是痛苦的緩慢)。請告訴我,我是否也錯過了一些東西。避免在硒調用期間在遠程服務器上打開瀏覽器
在此先感謝。
嘗試使用Selenium Grid而不是Putty在遠程服務器上運行Selenium應用程序。 Selenium網站有一個很好的使用Selenium Grid的快速入門指南:http://code.google.com/p/selenium/wiki/Grid2。
@Lori
我實現了代碼,但它仍試圖打開它膩子因此需要花費大量的時間來完成工作。代碼如下:'code'
import sys
from scrapy.spider import BaseSpider
from scrapy.http import FormRequest
from scrapy.selector import HtmlXPathSelector
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from scrapy.http import Request
from selenium import selenium
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
class DmozSpider(BaseSpider):
name = "linkedin_crawler"
#defence news
global company
global query
companyFilename = '<filename>'
f=open(companyFilename,"r")
f.seek(0)
company = f.readline().strip()
f.close()
queryFilename = '/var/www/Symantec/recon/recon/' +company+ '/Spider/LinkedIn/query.txt'
f = open(queryFilename)
f.seek(0)
query=f.readline().strip()
f.close()
start_urls = ['https://www.linkedin.com/uas/login'];
def __init__(self):
BaseSpider.__init__(self)
capabilities = webdriver.DesiredCapabilities()
self.selenium = webdriver.Remote(command_executor = 'http://localhost:5000/wd/hub', desired_capabilities = capabilities.FIREFOX)
def __del__(self):
self.selenium.quit()
def parse(self, response):
sel= self.selenium
sel.get(response.url)
global query
elem1 = sel.find_element_by_name("session_key")
elem2 = sel.find_element_by_name("session_password")
elem1.send_keys("myemailid")
elem2.send_keys("mypassword")
elem2.send_keys(Keys.RETURN)
return Request(query, callback=self.page_parse)
def page_parse(self,response):
global query
global company
sel= self.selenium
sel.get(query)
for i in xrange(10):
#for i in xrange(5):
nameFilename = ''
#print hxs
nlist = sel.find_elements_by_xpath('//ol[@class="search-results"]/li/div/h3/a')
fh = open(nameFilename,"a")
for j in xrange(len(nlist)):
url = nlist[j].get_attribute("href").encode('utf-8')
name = nlist[j].text.encode('utf-8')
fh.write(name)
fh.write("<next>")
fh.write(url)
fh.write('\n')
fh.close()
next = sel.find_elements_by_xpath('//a[@class="page-link"]')
next[0].click()
time.sleep(5)
要在服務器上運行這個腳本,我使用putty來激發命令。但是之後它再次使用Xming來打開瀏覽器,這使得進程再次變慢。所以,如何在不通過Xming在本地機器上打開瀏覽器的情況下運行腳本,這樣就不會成爲瓶頸。由於
你可以用一個「無頭」司機,HtmlUnitDriver,實際上不打開瀏覽器中運行硒:
http://code.google.com/p/selenium/wiki/HtmlUnitDriver
注:HtmlUnitDriver會接受一個參數,以便它可以模擬特定的驅動程序。
我實現了代碼,但仍嘗試從putty中打開它,因此需要花費大量的時間才能完成工作。代碼如下: – Aryabhatt
我在[link](http://www.redconfetti.com/2010/01/selenium-no-display-specified/)處發現了以下建議。即使我這樣做,它顯示我一個錯誤:無法打開顯示器:: 0 – Aryabhatt