2016-09-16 38 views
1

我需要在Node.js中使用无头硒进行扫描。我试过Webdriver.io,它与非无头Selenium一起工作。但是当我运行无头硒时,它根本不起作用。下面是代码(一样的webdriver.io例子)Node.js使用Webdriver.io +硒进行无头网页扫描

webdriverio 
    .remote(options) 
    .init() 
    .url('http://www.google.com') 
    .getTitle().then(function(title) { 
    console.log('Title was: ' + title); 
}) 
    .end(); 

如何使其与无头硒工作吗?或者有其他的选择吗?

回答

-1

我已经在过去做过很多不同的库,除非你需要登录或操作页面,我建议你使用requestcheerio来处理你的拼写。这允许您使用jQuery风格的过滤来抓取内容。它还可以让你执行抓取而不依赖于任何其他的东西,如Selenium或PhantomJS。

简单的例子:

request('http://www.google.com', (err, response, body) => { 
    if(err) console.error(err); 
    const $ = cheerio.load(body); 

    const title = $('title').text(); 
    console.log(`Title was: ${title}`); 
    // Or scrape whatever you want from the page 
}); 

如果您需要处理登录,处理表单,或在页面上执行任何操作,你刮它,你可以尝试任意数量的图书馆前。我用Zombie.js获得了不错的结果,并尝试了其他几个像硒Nightmare(使用PhantomJS),PhantomJS和其他人。

最后Request和Cheerio使得它很容易快速刮页。

+0

我知道cheerio并将它与请求一起使用之前。请求的问题有时并不像我们在浏览器中看到的那样返回HTML,所以使用cheerio解析HTML是不可能的。例如,对于此页面indotrading.com/companycatalog/。我只需要找到一种获取HTML代码的方法,然后使用cheerio加载它。 – NoName2

+0

对不起,它看起来像你试图刮一些动态网站.. [nightmarejs](https://github.com/segmentio/nightmare)是友好的,但我讨厌有PhantomJS依赖。 Zombie.js已经发展成为一个浏览器测试框架,但过去我曾多次使用它,因为它不依赖于其他工具包。 – Ding

+0

fwiw,nightmare.js不再有phantomjs依赖(大约一年前删除)。它现在完全运行在电子上。 – reinpk

0

你必须在无头环境中设置硒。试试xvfb - 这是firefox的无头gui。

$ apt-get install fvfb -y 
$ DISPLAY=:1 xvfb-run java -Dwebdriver.gecko.driver=./geckodriver -jar selenium-server-standalone-3.0.1.jar 
相关问题