3

我使用 webdriver 编写了一个 selenium 应用程序。我希望在远程服务器上运行它。当我通过 putty(连同 Xming)登录服务器来执行此操作时,selenium 会尝试仅在服务器上打开浏览器并通过外部显示器加载页面。但是,这样做比我只能在我的本地主机(而不是服务器)上打开浏览器要花费很多时间。这种事情是否可能发生或仅在服务器上打开是唯一的选择(这非常慢)。如果我也遗漏了什么,请告诉我。

提前致谢。

4

3 回答 3

2

尝试使用 Selenium Grid 而不是 Putty,在远程服务器上运行 Selenium 应用程序。Selenium 网站有一个很好的使用 Selenium Grid 的快速入门指南: http ://code.google.com/p/selenium/wiki/Grid2 。

于 2013-06-05T18:18:48.150 回答
1

您可以使用“无头”驱动程序 HtmlUnitDriver 运行 Selenium,该驱动程序实际上不会打开浏览器:

http://code.google.com/p/selenium/wiki/HtmlUnitDriver

注意: HtmlUnitDriver 将接受一个参数,以便它可以模拟特定的驱动程序。

于 2013-09-11T17:00:10.920 回答
0

@洛瑞

我实现了代码,但它仍然尝试从腻子打开它,所以需要很多时间才能完成工作。代码如下:'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 在我的本地机器上打开浏览器的情况下运行脚本,以免成为瓶颈。谢谢

于 2013-06-07T06:15:14.163 回答