PyQT4表单提交响应

2024-03-28 11:24:02 发布

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

我正试着用PyQT4做一个网络刮削器。我正试图刮一个公用电话簿(黄页)。我已经有一些使用“requests”库的经验,但是在这种情况下,我不能使用它,因为我需要向其发送请求的页面在最后生成了一个随机字符串。我还应该提到的是,它不是一个经典的表单,实际上网站上的javaScript函数接受用户在表单字段中输入的任何内容,并以链接的形式将其添加到一起。最后,它添加随机生成的字符串,并将您重定向到该页。这就是我使用PyQT4的原因。我的想法是使用PyQT4来操作DOM元素。我对PyQT4完全陌生,但我成功地完成了第一部分。我成功地填充了输入字段并按下了按钮,但我不知道如何从响应页面获取内容。我的想法是以某种方式获取响应页面的当前URL,然后在页面仍然加载时在其中找到我需要的内容,因为一旦它重新加载,链接就会失效(因为随机生成的字符串)。我很抱歉写了这么多,但我尽量把问题说得具体一点。我也很抱歉我的英语,它不是我的母语。我使用的是python3.4,如果这是相关的话。代码如下:

from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4 import QtCore, QtGui, QtWebKit
import sys
import os

x = 0

def executeJs():
    global web
    web.page().mainFrame().evaluateJavaScript("document.getElementById('Mesto').value='Ruma';")
    web.page().mainFrame().evaluateJavaScript("document.getElementById('Ulica').value='marka pericina kamenjara';")
    web.page().mainFrame().evaluateJavaScript("document.getElementById('Broj').value='8';")
    web.page().mainFrame().evaluateJavaScript("document.getElementById('btn_trazi').click()")

    print ("js executed\n")

def onDone():
    global x
if x == 0:
    x = 1
    executeJs()

app = QApplication(sys.argv)

web = QWebView()
web.load(QUrl("http://www.11811.rs/BeleStrane/Index"))
web.loadFinished.connect(onDone)


web.show()
app.exec_()

Tags: 字符串fromimportweb内容value链接page