在python中自动与网页交互

在python中自动与网页交互,python,google-app-engine,pycurl,Python,Google App Engine,Pycurl,我想自动与网页交互。我一直在使用pycurl,但最终网页将使用javascript,所以我正在寻找替代方案。典型的交互是“打开页面,搜索一些文本,点击链接(打开表单),填写表单并提交” 如果这有什么不同的话,我们正在谷歌应用引擎上部署 澄清:我们正在appengine上部署该网页。但是交互是在单独的机器上运行的。所以硒似乎是最好的选择 硒呢?()退房。它应该能够很容易地处理您的“典型交互”。另一个选项可能是,但我从未亲自使用过。非常轻量级,但效果很好。Twill和mechanize不支持Java

我想自动与网页交互。我一直在使用pycurl,但最终网页将使用javascript,所以我正在寻找替代方案。典型的交互是“打开页面,搜索一些文本,点击链接(打开表单),填写表单并提交”

如果这有什么不同的话,我们正在谷歌应用引擎上部署


澄清:我们正在appengine上部署该网页。但是交互是在单独的机器上运行的。所以硒似乎是最好的选择

硒呢?()

退房。它应该能够很容易地处理您的“典型交互”。另一个选项可能是,但我从未亲自使用过。

非常轻量级,但效果很好。

Twill和mechanize不支持Javascript,而Qt和Selenium不能在只支持纯Python代码的App Engine((1))上运行。我不知道有任何纯Python Javascript解释器,这正是在AppEngine上部署支持JS的scraper所需要的:-(

也许Java中有某种东西,它至少允许您在(的Java版本)上部署App Engine?Java和Python中的App Engine应用程序版本可以使用相同的数据存储,因此您可以在Python中保留应用程序的某些部分…只是不需要理解Javascript的部分。不幸的是,我对Java/AE环境了解不够,无法建议使用任何特定的包进行尝试


((1)):为了澄清这一点,因为似乎有一个误解让我被否决了:如果你在另一台计算机上运行Selenium或其他Scraper,你当然可以针对部署在App Engine中的网站(不管你的目标网站是如何部署的,什么编程语言)它使用,等等,等等,只要它是一个你可以访问的网站[[真实网站:flash,&c,可能不同]])。我如何理解这个问题是,OP正在寻找方法让抓取作为应用程序引擎应用程序的一部分运行--这是有问题的部分,而不是你(或其他人;-)运行正在刮取的站点!

您是否尝试将QtWebKit与PyQt一起使用,您可以加载特定的url并从Python读取内容。然后您可以搜索url并再次使用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_())

谢谢Alex,这很有用。python spidermonkey会起作用吗?否则,我想我应该开始寻找Java库…nafe,你在App Engine上部署了什么?包含表单的页面,或者你实际上是在尝试将自动化脚本部署到App Engine。如果你在App Engine之外运行自动化脚本,请选择enium将是一个不错的选择。Python spidermonkey在应用程序引擎上不起作用——有大量的C语言。如果你使用java,看看HTMLUnit,它可以处理一些javascript。Selenium在Appengine上确实起作用。Se:RC使用Python可以很容易地浏览整个网站。我测试了我的应用程序引擎应用程序way@AutomatedTester你不是伦尼在AppEngine的生产实例上运行Selenium——您正在另一台计算机上运行它,然后您当然可以“浏览站点”无论它们是如何部署的,您都可以访问。嗨,Alex,我很抱歉我的问题模棱两可。我应该更仔细地表述它。我想从另一台机器上进行交互,而不是在app engine中。非常感谢您的帮助--非常感谢。谢谢John,twill会很好,只是看起来不太一样支持javascript,这是我的应用程序的下一步。Qt不会在应用程序引擎上运行(当然,你可以将目标站点部署在应用程序引擎中,但你不能将Qt作为GAE应用程序的一部分运行)。如果你喜欢答案(例如selenium),你应该“接受”它!:)投票关闭工具记录。