Python : 使用PyQT4 + Soup来抓取多个页面

2024-06-28 19:51:17 发布

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

我正在尝试使用pythonpyqt4+美丽的汤刮几个网页。在

由于我整个程序的性质,我使用了一个主脚本“程序.py“调用其他脚本的函数,用靓汤做不同的分析。在

因此,mymain的简化架构程序.py如下:

program.py :

import script1
import script2

script1.function1(urlA)
script2.function2(urlB)

使用script1.py和script2.py,如下所示:

^{pr2}$

我的脚本2有完全相同的结构,但是在另一个url上做其他事情。在

script2.py :

import requests
import re
from bs4 import BeautifulSoup
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import * 

class Render(QWebPage):
    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()
    def _loadFinished(self, result):
        self.frame = self.mainFrame()
        self.app.quit()   


def function2(url):
    r = Render(url)
    soup = BeautifulSoup(unicode(r.frame.toHtml()))

    #Do many other things with soup
    #Nothing related to PyQT4 further in this script

使用script1.py一切正常。我的函数1和分析运行成功。在

但是script2.py有错误,我有以下错误:

QObject::connect: Cannot connect (null)::configurationAdded(QNetworkConfiguration) to QNetworkConfigurationManager::configurationAdded(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::configurationRemoved(QNetworkConfiguration) to QNetworkConfigurationManager::configurationRemoved(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::configurationChanged(QNetworkConfiguration) to QNetworkConfigurationManager::configurationChanged(QNetworkConfiguration)
QObject::connect: Cannot connect (null)::onlineStateChanged(bool) to QNetworkConfigurationManager::onlineStateChanged(bool)
QObject::connect: Cannot connect (null)::configurationUpdateComplete() to QNetworkConfigurationManager::updateCompleted()

我花了很多时间寻找这个问题,发现PyQT4无法在同一个实例中加载多个页面。在

问题是,我需要PyQT4在将页面内容加载到Beautiful Soup之前呈现Javascripts。在

所以我想我需要self.app.退出在script1中的function1的末尾,以便script2中的function2也可以呈现带有PyQT4的页面。但我没能成功。在


Tags: tofrompyimportselfappurlconnect