Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用PySide/PyQt从网站下载文件_Python_Qt_Pyqt_Pyside - Fatal编程技术网

Python 如何使用PySide/PyQt从网站下载文件

Python 如何使用PySide/PyQt从网站下载文件,python,qt,pyqt,pyside,Python,Qt,Pyqt,Pyside,我有此代码,它接收网页的所有网络资源。 我从中获取了这段代码,因此我不知道它是如何工作的,但我知道它接收一个网页的所有网络资源,这正是我所需要的。 这是我的代码: import sys, time from PySide.QtCore import QUrl, SIGNAL from PySide.QtGui import QApplication from PySide.QtWebKit import QWebPage, QWebView, QWebSettings from PySide.Q

我有此代码,它接收网页的所有网络资源。
我从中获取了这段代码,因此我不知道它是如何工作的,但我知道它接收一个网页的所有网络资源,这正是我所需要的。
这是我的代码:

import sys, time
from PySide.QtCore import QUrl, SIGNAL
from PySide.QtGui import QApplication
from PySide.QtWebKit import QWebPage, QWebView, QWebSettings
from PySide.QtNetwork import QNetworkAccessManager, QNetworkRequest

#reload(sys)
#sys.setdefaultencoding('utf-8')
fn_log = 'url_dd.txt'
fp_log = open(fn_log, 'ab+')
class WebPage(QWebPage):
    def __init__(self, logger=None, parent=None):
        super(WebPage, self).__init__(parent)

    def javaScriptConsoleMessage(self, message, lineNumber, sourceID):
        sys.stderr.write('Javascritp error at line number %d\n' % (lineNumber))
        sys.stderr.write('%s\n' % (message, ))
        sys.stderr.write('Source ID: %s\n' % (sourceID, ))

class Crawler(QApplication):
    def __init__(self, url):
        super(Crawler, self).__init__(sys.argv)
        self.url = url
        self.web_view = QWebView()
        self.web_page = WebPage()
        self.web_view.setPage(self.web_page)
        self.web_frame = self.web_page.mainFrame()
        self.network = NetworkAccessManager()
        self.web_page.setNetworkAccessManager(self.network)
        self.settings = self.web_page.settings().globalSettings()
        self.settings.setAttribute(QWebSettings.PluginsEnabled, False)
        QWebSettings.clearMemoryCaches()
        self.web_view.resize(1024, 9000)
        self.connect(self.web_page, SIGNAL('loadFinished(bool)'), self.loadFinished)
        print('Before loading')
        self.web_view.load(QUrl(self.url))
        print('After loading')

    def loadFinished(self, ok):
        print('Start loadFinished()')
        print('Start writing')
        #with open('content_dd.txt', 'ab+') as fp:
            #fp.write(self.web_frame.toHtml().toUtf8())
        print('End writing')
        print('End loadFinished()')
        try:
            self.quit()
        except Exception as e:
            print('FATAL ERROR: %s' % (str(e)))

class NetworkAccessManager(QNetworkAccessManager):
    def __init__(self):
        super(NetworkAccessManager, self).__init__()
        # QNetworkAccessManager.__init__(self)
        self.connect(self, SIGNAL('finished (QNetworkReply *)'), self.finishd)

    def createRequest(self, operation, request, data):
        # url = request.url().toString()
        self.setNetworkAccessible(self.Accessible)
        return QNetworkAccessManager.createRequest(self, operation, request, data)

    def finishd(self, reply):
        print('In NetworkAccessManager finishd')
        url = str(reply.url().toString())
        log = '%s: %s\n' % (time.ctime(), url)
        #fp_log.write(log)
        print(reply)
        print(reply.request())
        print(log)
        print(url)

if __name__ == '__main__':
    url = 'http://need4bit.com'
    crawler = Crawler(url)
    sys.exit(crawler.exec_())

我应该如何修改此代码,以便将所有资源保存到一个目录中。

使用您没有编写但不理解的代码有什么意义?即使是这段代码的作者也表示它有缺陷,不能完全工作。你为什么不使用第三方工具,比如网站复制?哇,这正是我需要的,有没有办法把它捆绑到我的exe中,因为我不能提供我的客户端可执行文件,除了我自己的。httrack网站有关于许可的信息,还有一个论坛,你可以在那里进一步提问。还有一个python扩展:。免责声明:我与httrack没有任何关联,我也不一定支持他们的软件。其他网站复印机工具可用;-)