私は、特定のWebサイトから数千のPDFをダウンロードすることを理想的に試みています。しかし何らかの理由で100のPDFをダウンロードすることさえできません。なぜ私は分からない。コードは次のとおりです。Pyqt4を使用してURLから数千のPDFをダウンロードする
#!/usr/bin/env python
import time
from pyPdf import PdfFileWriter, PdfFileReader
import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from xhtml2pdf import pisa
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import*
from PyQt4.QtWebKit import *
class Foo(QWidget):
def __init__(self, parent=None):
super(Foo, self).__init__(parent)
self.count = -1
text_file = open("input.txt", "r")
self.params = text_file.read().split('\n')
self.url = 'http://www.asdfasdfasdf.com/Property.aspx?mode=details&pin={0}'
self.gridLayout = QGridLayout(self)
#self.tabWidget = QTabWidget(self)
#self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
self.mapper = QSignalMapper(self)
self.mapper.mapped.connect(self.on_mapper_mapped)
for i in range(100):
grabber = QWebView()
grabber.loadFinished.connect(self.mapper.map)
self.mapper.setMapping(grabber, i)
#self.tabWidget.addTab(grabber, "opener {0}".format(str(i)))
grabber.loadFinished.emit(True)
@pyqtSlot(int)
def on_mapper_mapped(self, gNumber):
self.count += 1
if self.count < len(self.params):
#gParam = self.params[self.count]
gParam = self.params[self.count]
opener = self.mapper.mapping(gNumber)
opener.load(QUrl(self.url.format(gParam)))
printer = QPrinter()
#setting format
printer.setPageSize(QPrinter.A4)
printer.setOutputFormat(QPrinter.PdfFormat)
#export file as c:\tem_pdf.pdf
PIDString = gParam[:2] + '-' + gParam[2:4] + '-' + gParam[4:7] + '-' + gParam[7:10] + '-' + gParam[10:14]
printer.setOutputFileName(PIDString + '.pdf')
def convertIt():
opener.print_(printer)
QObject.connect(opener, SIGNAL("loadFinished(bool)"), convertIt)
print str(self.count) + ' of ' + str(len(self.params))
if __name__ == "__main__":
import sys
app = QApplication(sys.argv)
main = Foo()
#main.show()
app.exec_()
sys.exit
私もフッターを追加したいのですが、それをやろうとするとバグがあります。 Input.txtには100個の数字があります(テストのためだけに85000で動作する必要があります)。それは5または10のような実際の小さな数字で動作しますが、100はしません。QwebViewインスタンスには制限がありますか?私はそれを動作させるために管理する必要がありますか?
このコードを100個のPDFで実行すると、20個のPDFSが印刷されます。私は100より小さいものに範囲を変更した場合、それが重複したPDFの確かまた20以上
を持って、私はこのエラーを取得する:
qpainter::begin: returned false
)』?症状? – mnagel
も、多分あなたはサーバー側の絞り/アンチスパムに遭遇し、それはいくつかの光をもたらします願っています。あなたがチェックしていますそれ? – mnagel