在python中自动与网页交互

2024-06-06 10:26:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 引擎文本机器网页替代品表单链接部署
3条回答

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

也许Java中有一些东西,至少可以让您部署到(Java版本的)应用程序引擎上?Java和Python中的应用程序引擎应用程序版本可以使用相同的数据存储,因此您可以将应用程序的某些部分保存在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_())

相关问题 更多 >