繁体   English   中英

使用Webdriver.io + Selenium的Node.js无头Web抓取

[英]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

过去,我已经使用不同的库进行了很多抓取,除非您需要登录或操纵页面,否则我建议您使用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取得了不错的结果,并尝试了其他一些方法,例如Selenium Nightmare (使用PhantomJS),PhantomJS等。

最后,Request和Cheerio使得快速抓取页面变得非常容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM