2016-09-16 63 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 
相關問題