我是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的情况下绕过这个吗?
答案 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()