2017-01-30 6 views
1

PhantomJSはGoogle Alert RSSフィードを作成する必要があるためダウンロードしましたが、APIは提供していません。PhantomJSにGoogleアラートの古いバージョンが表示されるのはなぜですか?

アクセスしたURLのレンダリングされたイメージが古いため、「配信先」を「RSS」に変更するなど、必要な操作を実行するページの要素が見つからない.......

これは何ですか?バグ?どのようにウェブサイトとブラウザとのアクセスが異なるのですか?

マイスクリプト:

var page = require('webpage').create(), 
    isLoaded, 
    controller, 
    isSubmitted = false 

page.open('https://www.google.com/alerts', function() { 
    page.viewportSize = { width: 1920, height: 1080 } 
    page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36' 

    isLoaded = true 
}) 

page.onLoadStarted = function() { 
    log('Loading page...') 
} 

page.onLoadFinished = function(status) { 
    log('Page has loaded.') 

    if (status !== 'success') { 
    log('The page has failed to load.') 
    exit() 
    } else { 
    if (isSubmitted) { 
     log('Submitted!') 
     clear() 
     exit() 
    } else { 
     controller = setInterval(function() { 
     if (isLoaded) { 
      isLoaded = false 
      fillUpInputField('input', 'PhantomJS') 
     } else { 
      selectRSSOption() 
     } 
     }, 7000) 
    } 
    } 
} 

function exit() { 
    phantom.exit() 
} 

function log(str) { 
    console.log(str) 
} 

function render(name) { 
    page.render(name + '.png') 
} 

function fillUpInputField(selector, query) { 
    page.evaluate(function(selector) { 
    document.querySelector(selector).focus() 
    }, selector) 
    page.sendEvent('keypress', query) 

    render('fill_up_form.png') 
    log('Rendered fill_up_form.png') 
} 

function selectRSSOption() { 
    page.evaluate(function() { 
    document.querySelector('.show_options').click() 
    }) 

    render('show_options.png') 
    log('Rendered show_options.png') 
} 
+0

ユーザーエージェント文字列を別のブラウザに置き換えてください。 – qqilihq

+0

あなたのスクリプトを表示してください。 – Vaviloff

+0

@Vaviloffが追加されました。 – mfgabriel92

答えて

0

デフォルトでは、Googleは(も小さいため、デフォルトのビューポートの)古い携帯電話のブラウザとしてPhantomJSを扱いますので、あなたには、ブラウザのユーザーエージェントを偽装する必要があります。現代のFirefox、Chrome、Edgeのユーザーエージェントを使ってみてください。

var page = require('webpage').create(); 

page.viewportSize = { width: 1280, height: 800 }; 
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36'; 
+0

レンダリングされた画像には変更はありませんが、古いGoogle Alertsのウェブサイトはまだ表示されています。私は文字列全体をコピーしただけで、現在のバージョンのChromeも置いています。 – mfgabriel92

+0

何か問題が起こった可能性がありますか? – mfgabriel92

関連する問題