我需要在Node.js中使用无头Selenium进行抓取。我试过Webdriver.io,它与非无头Selenium一起工作。但是当我运行无头Selenium时,它根本不起作用。这是代码(与webdriver.io示例相同)
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.getTitle().then(function(title) {
console.log('Title was: ' + title);
})
.end();
如何让它与无头Selenium一起使用?或者有其他选择吗?
答案 0 :(得分: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
答案 1 :(得分:-1)
我过去曾使用不同的库进行过大量的搜索,除非您需要登录或操作页面,否则我建议您使用request和cheerio来处理刮。这允许您使用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得到了不错的结果,并尝试了其他几个如Selenium Nightmare(使用PhantomJS),PhantomJS等。
最后,Request和Cheerio已经很容易快速抓取一页。