Python QWebview:上载到Youtube返回错误
以下是我的情况: 我创建了一个QWebview,加载了一个Youtube页面,然后登录。 我选择上传选项(http://www.youtube.com/my_videos_upload),然后选择 要上传的视频。然而,youtube总是回来 “服务器返回了无效响应。请按照以下步骤再次尝试上载文件。” 我怎样才能解决这个问题? 谢谢 编辑:我使用的代码是:Python QWebview:上载到Youtube返回错误,python,video,upload,youtube,qwebview,Python,Video,Upload,Youtube,Qwebview,以下是我的情况: 我创建了一个QWebview,加载了一个Youtube页面,然后登录。 我选择上传选项(http://www.youtube.com/my_videos_upload),然后选择 要上传的视频。然而,youtube总是回来 “服务器返回了无效响应。请按照以下步骤再次尝试上载文件。” 我怎样才能解决这个问题? 谢谢 编辑:我使用的代码是: import sys from PyQt4.QtCore import QUrl from PyQt4.QtGui import QAppli
import sys
from PyQt4.QtCore import QUrl
from PyQt4.QtGui import QApplication
from PyQt4.QtWebKit import QWebView
from PyQt4.QtNetwork import QNetworkAccessManager
from PyQt4 import QtCore
def fillForm(web, username, password):
print "Filling in the form"
doc = web.page().mainFrame().documentElement()
print "Finding username tag"
user = doc.findFirst("input[id=Email]")
print "Finding passwd tag"
passwd = doc.findFirst("input[id=Passwd]")
print "Setting information"
user.evaluateJavaScript("this.value = '%s'" % username)
passwd.evaluateJavaScript("this.value = '%s'" % password)
button = doc.findFirst("input[id=signIn]")
button.evaluateJavaScript("this.click()")
def doLogin(web, url, username, password):
web.loadFinished.connect(lambda: fillForm(web, username, password))
web.load(url)
web.show()
if __name__ == "__main__":
app = QApplication(sys.argv)
nam = QNetworkAccessManager()
web = QWebView()
web.page().setNetworkAccessManager(nam)
url = QUrl(r"https://accounts.google.com/Login")
username = "name"
password = "pass"
doLogin(web, url, username, password)
app.exec_()
请尝试在
web=QWebView()之后添加此项:
你能发布你正在使用的代码吗?@X.Jacobs:我使用这个代码片段:在这里什么都看不到,请尝试编辑你的帖子。请将该代码插入到你的帖子中,以便以正确的格式显示。登录后,我可以导航到youtube->选择上载选项。很抱歉,我之前的评论中出现了一段糟糕的代码。您可以从PyQt4.QtWebKit导入QWebView、QWebSettings添加,这可能是QWebView的问题吗?谷歌说我们应该使用“现代”浏览器:“遵循步骤”链接将我带到上面的页面()。我想我会使用Youtube Python ApI,不过如果我能使用web界面会更好。好的,没关系。我在上修改了代码,它工作得非常好!
settings = web.settings()
settings.setAttribute(QWebSettings.PluginsEnabled, True)