我想自动与网页进行交互。我一直在使用pycurl直到现在,但最终网页将使用JavaScript,所以我正在寻找替代品。典型的互动是“打开页面,搜索一些文字,点击链接(打开表格),填写表格并提交”。自动与python中的网页进行交互
我们正在部署Google App引擎,如果这有所影响。
说明:我们正在将网页部署在appengine上。但交互是在一台独立的机器上运行的。所以硒似乎是最好的选择。
我想自动与网页进行交互。我一直在使用pycurl直到现在,但最终网页将使用JavaScript,所以我正在寻找替代品。典型的互动是“打开页面,搜索一些文字,点击链接(打开表格),填写表格并提交”。自动与python中的网页进行交互
我们正在部署Google App引擎,如果这有所影响。
说明:我们正在将网页部署在appengine上。但交互是在一台独立的机器上运行的。所以硒似乎是最好的选择。
硒怎么样? (http://seleniumhq.org)
Twill和机械化不做Javascript,Qt和Selenium不能在App Engine((1))上运行,它只支持纯Python代码。我不知道任何纯Python的Javascript解释器,这是你需要在App Engine上部署一个JS支持的抓取器:-(。
也许在Java中有一些东西,它至少可以让你部署在App Engine的Java版本上Java和Python中的App Engine应用程序版本可以使用相同的数据存储,因此您可以将应用程序的某些部分保留在Python中,而不是需要理解Javascript的部分。我不太了解Java/AE环境以建议任何特定的软件包尝试。
((1)):澄清,因为似乎存在一个误解,导致我得到了低估:如果您在另一台计算机上运行Selenium或其他扫描程序,那么您当然可以定位部署在App Engine中的站点(无论你的目标网站是如何部署的,它使用什么编程语言等等,只要它是一个你可以访问的网站[[真实的网站:flash,& c,可能可能不同]])。我如何阅读这个问题是,OP正在寻找方法让以作为App Engine应用程序的一部分运行 - 是有问题的部分,而不是您(或其他人;-)运行的位置该网站被刮!
谢谢亚历克斯,这很有用。 python spidermonkey会诀窍吗?否则,我想我应该开始寻找Java库... – nafe
nafe,你在App Engine上部署什么?包含表单的页面,或者您实际尝试将自动化脚本部署到App Engine的页面。如果您正在运行App Engine之外的自动化脚本,则Selenium将成为您的首选。Python spidermonkey无法在App Engine上运行 - 引擎盖下有大量的C语言。如果你要用java,看看HTMLUnit,它可以处理一些javascript。 –
硒对Appengine起作用。 Se:使用Python的RC可以很容易地浏览网站。我测试了我的应用引擎应用 – AutomatedTester
您是否尝试过在PyQt中使用QtWebKit,您可以加载特定的URL并从Python中读取内容。然后,您可以搜索网址并再次使用Webkit访问它。我认为所有这些都可以用一些基本的Django来完成(假设你在GAE上使用Django)视图测试来测试响应代码。下面是QtWebKit的PyQt的代码,如果你想这样做的GUI的方式得到你开始一个例子:如果你喜欢一个答案(如硒)
import sys
import time
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
app = QApplication(sys.argv)
web = QWebView()
settings = web.settings()
settings.setAttribute(QWebSettings.PluginsEnabled, True)
settings.setAttribute(QWebSettings.JavaEnabled, True)
settings.setAttribute(QWebSettings.JavascriptCanOpenWindows, True)
settings.setAttribute(QWebSettings.JavascriptCanAccessClipboard, True)
settings.setAttribute(QWebSettings.DeveloperExtrasEnabled, True)
settings.setAttribute(QWebSettings.ZoomTextOnly, True)
settings.setOfflineStoragePath('.')
settings.setIconDatabasePath (".")
url = 'http://stackoverflow.com'
web.load(QUrl(url))
web.show()
sys.exit(app.exec_())
Qt不会在应用引擎上运行(当然,您可以将_target_网站部署在应用引擎中,但是您不能将_run_ Qt作为您GAE应用的一部分)。 –
你应该“接受”呢! :) – nicolaskruchten
谢谢!将做:) – nafe
投票结束作为工具rec。 –