[英]Node.js Headless Web Scraping with Webdriver.io + Selenium
我需要在Node.js中使用无头Selenium进行抓取。 我尝试了Webdriver.io,它与无头Selenium一起使用。 但是,当我运行无头硒时,它根本不起作用。 这是代码(与webdriver.io示例相同)
webdriverio
.remote(options)
.init()
.url('http://www.google.com')
.getTitle().then(function(title) {
console.log('Title was: ' + title);
})
.end();
如何使其与无头硒一起使用? 还是有其他选择?
您必须在无头环境中设置硒。 尝试使用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
过去,我已经使用不同的库进行了很多抓取,除非您需要登录或操纵页面,否则我建议您使用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使得快速抓取页面变得非常容易。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.