如何使用Python Mechanize填写需要Javascript的web表单?

如何使用Python Mechanize填写需要Javascript的web表单?,python,mechanize,Python,Mechanize,我试着用mechanize填写表格。但问题是网页需要javascript。因此,每当我尝试访问该页面时,该页面就会重定向到一个错误页面,指出需要javascript。使用mechanize浏览器时,有没有办法启用javascript 这是密码 import mechanize import ssl ssl._create_default_https_context = ssl._create_unverified_context br = mechanize.Browser() br.set_

我试着用mechanize填写表格。但问题是网页需要javascript。因此,每当我尝试访问该页面时,该页面就会重定向到一个错误页面,指出需要javascript。使用mechanize浏览器时,有没有办法启用javascript

这是密码

import mechanize
import ssl

ssl._create_default_https_context = ssl._create_unverified_context
br = mechanize.Browser()
br.set_handle_robots(False)
br.open("https://192.168.10.3/connect/PortalMain")
for f in br.forms():
    print f
另外,当我尝试使用“在我的浏览器上运行良好”的BeautifulSoup提取网页时,我也遇到了同样的问题。它会重定向到新页面。 (我尝试在浏览器上禁用javascript,得到了Beauty soup显示给我的页面。)

以下是BeautifulSoup的代码(如果有帮助的话)

import ssl
import urllib2
from bs4 import BeautifulSoup

ssl._create_default_https_context = ssl._create_unverified_context
page = urllib2.urlopen("https://192.168.10.3/connect/PortalMain")
soup = BeautifulSoup(page,'html.parser')
print soup

您可以直接使用Selenium:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

usernameStr = 'putYourUsernameHere'
passwordStr = 'putYourPasswordHere'

browser = webdriver.Chrome()
browser.get('https://192.168.10.3/connect/PortalMain')

# fill in username and hit the next button (replace selectors!)
username = browser.find_element_by_id('Username')
username.send_keys(usernameStr)
password = browser.find_element_by_id('Password')
password.send_keys(passwordStr)
loginButton = browser.find_element_by_id('login')
loginButton.click()
这将使用Chrome web驱动程序打开浏览器并登录,您可以将其切换为使用Selenium支持的任何其他驱动程序,例如Firefox

资料来源:


请记住,如果站点使用自签名证书,您可能需要进行调整。

如何添加对不受信任/自签名证书的支持?在browser=webdriver.Chrome()文件的第9行,浏览器行
文件“demo.py”中出现错误start os.path.basename(self.path)中的第83行“/usr/local/lib/python2.7/site packages/selenium/webdriver/chrome/webdriver.py”,第68行,在/usr/local/lib/python2.7/site packages/selenium/webdriver/common/service.py”中,self.start\u error\u message)selenium.common.exceptions.WebDriverException:message:'chromedriver'可执行文件需要位于路径中。请参阅https://sites.google.com/a/chromium.org/chromedriver/home
您需要安装chromedriver,这在我发给您的上面的源代码链接中有详细说明。甚至还有一个指向s的说明的链接在错误消息中解决这个问题。也不要在新项目中使用Python 2.7,除非有特殊原因,否则在启动新项目时应该使用Python 3.6。没问题,如果这个答案是正确的,如果您能将其标记为已接受的答案,我将不胜感激。