0

我相信这是一个非常具有挑战性的问题。

我的目标网页是点击这里

您会看到有一个带有橙色背景文本“Jouw zoekertje GRATIS PLAATSEN”的按钮。如果您在常规浏览器上单击此链接,它会转到“ http://www2.kapaza.be/nl/ai ”。那部分很好。

现在我在 Qt 的 QWebView 上做同样的事情。我认为它是Qt还是任何其他环境都没有关系。我相信它的行为会相同。发生的情况是,当我将此链接加载到我的 QWebView 时,它不会加载任何内容。有些东西一直在加载,但没有任何可见的东西出来。我认为这是对网站的一种保护。在我的应用程序中,我需要以编程方式单击此链接。到目前为止,我已经为其他链接或按钮做了很多次类似的事情,但它们都不适用于这个目标链接。谁能告诉我可能是什么问题?

首先,我认为这是因为 cookie。我在我的软件上启用了它们,但仍然相同。

4

1 回答 1

0

根据我使用 QWebView 进行自动化\模拟的经验——如果你做得正确,没有一个网站是防弹的。尤其是在模拟点击、滚动等(客户端操作)时。

所以,我只是尝试做你想做的事情,它工作,页面加载,按钮点击和重定向。

这是成功的代码:

def tracker(self):
  return self.webView.page().currentFrame().documentElement()

qweb.load('http://www.kapaza.be/nl/index.htm')
button = qweb.tracker().findFirst('a[class="btn  homepage_btn"]')
button.evaluateJavaScript('this.click();')

我没有发现明显的问题,可能只是你犯了一个小错误,所以尝试上面的代码可能会有所帮助。

如果这没有帮助,这里有几件事需要考虑:

  • 代理 - 如果您通过代理与 QWebView 连接,某些页面可能无法加载或永远不会停止加载。尝试将其关闭或切换(将其关闭以确保...)。
  • 设置 - 它可能与篡改 QWebView 的设置有关。我会尝试添加:webView.settings().setAttribute(QWebSettings.AutoLoadImages, False)
  • 几秒钟后尝试调用“重新加载”。它对我有用几次:
...
wait(10)
webView.reload()

总而言之——这只是 QWebView 有时会发生的事情之一。您只需要熟悉变通方法,学会识别这些事件并有效地处理它们。底线是 - 我找不到页面有什么特别的问题 - 这是个好消息!你可以用它做任何你想做的事。尝试我提到的步骤,如果不起作用,请提交代码的相关部分。

祝你好运

于 2014-09-09T09:10:14.817 回答