没有Selenium或类似的东西,我可以绕过“Javascript是必需的”吗?

时间:2017-07-06 11:30:32

标签: javascript python python-requests

我是Python新手,我甚至不知道我是否正确询问,但问题是我需要向网站发送请求才能登录,这个网站给我回复了一条消息告诉我我必须在使用该网站之前启用javascript。

我用Selenium做了一切都很好,工作正常(更多的东西,不仅仅是登录)但现在我想在没有Selenium的情况下制作它,实际上没有任何浏览器窗口,这甚至可能吗?我想是的,但是,我需要一些帮助,因为我没有找到办法。

#!/usr/bin/python3
import requests

userEmail = "xxxxxxxxxxx@xxxxxxxxx.com" #using real data in the script
userPass = "xxxxxxxxxxxxx" #using real data in the script

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest'
}

def main():
    r = requests.post('https://www.thedomain.com/en/customer/account/loginPost/', 
    data = {'login[username]':userEmail, "login[password]":userPass}, headers=headers)
    print(r.text)

if __name__ == "__main__": main()

这是我得到的信息:

<html>
    <title>You are being redirected...</title>
    <noscript>Javascript is required. Please enable javascript before you are allowed to see this page.</noscript>
</html>

我可以在没有Selenium的情况下绕过这个吗?

1 个答案:

答案 0 :(得分:0)

在Selenium中使用无头浏览器

无头浏览器在命令行中运行。您需要在站点中运行JavaScript,如果您正在谈论没有服务器呈现的SPA,则需要更多,这意味着只有在JavaScript运行后才会看到该站点。

要使用无头浏览器,您必须在系统中install NodeJS

最知名的无头浏览器是PhantomJS,但有others

sudo npm install -g phantomjs

安装完成后,设置Selenium的驱动程序:

driver = webdriver.PhantomJS()

就是这样,在跑步时你不应该看到任何东西,你甚至可以在服务器上运行它。

干杯!

修改

另一个解决方案是使用pyvirtualdisplay,正如其名称所示,它创建了一个虚拟显示器,实现了相同的功能,但这样做可以在服务器中运行Chrome浏览器。 从here获取的快速示例:

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(1366, 768))
display.start()
browser = webdriver.Firefox()
browser.get('http://www.vionblog.com/')
browser.save_screenshot('vionblog.png')
browser.quit()
display.stop()