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没有任何关联,我也不一定支持他们的软件。其他网站复印机工具可用;-)