나는 주어진 웹 사이트에서 수천 개의 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가 인쇄됩니다. i가 100보다 작은 무언가의 범위를 변경하면, 중복 된 PDF의 것입니다하지만 확실히 더 또한 20
보다,이 오류가 얻을 : 당신의 "를 만들려고 노력하기 때문에 나는 생각
qpainter::begin: returned false
이 무슨 일"큰 숫자 "? 메시지? 증상이 작동하지 않습니다을 제공합니다 희망? – mnagel
을 또한, 어쩌면 당신은 서버 측 조절/안티 스팸으로 실행합니다. 당신은 확인했다 그? – mnagel