我正在試圖抓取JavaScript依賴項site。這是一個非常基本的網站,有一個簡單的實際列表(城市名稱,實際上),我不想複製並粘貼到Excel中。該列表是由JavaScript控制的,所以我想我需要使用類似Qt4的東西來模擬瀏覽器,並且我一直在嘗試PySide。使用PySide調用插槽時出錯
我已經開始與一些非常基本的代碼(我已經從here改編):
#!/usr/bin/env python
import sys
import signal
import argparse
from PySide.QtCore import *
from PySide.QtGui import *
from PySide.QtWebKit import QWebPage
class Crawler(QWebPage):
def __init__(self, url, file):
QWebPage.__init__(self)
self._url = url
self._file = file
def crawl(self):
signal.signal(signal.SIGINT, signal.SIG_DFL)
self.connect(self, SIGNAL('loadFinished(bool)'), self._finished_loading)
self.mainFrame().load(QUrl(self._url))
def _finished_loading(self, result):
file = open(self._file, 'w')
file.write(self.mainFrame().toHtml())
file.close()
sys.exit(0)
def main():
app = QApplication(sys.argv)
args = get_args()
crawler = Crawler(args.url, args.file)
crawler.crawl()
sys.exit(app.exec_())
def get_args():
"""
Command argument parser
Returns structure:
args.url
args.file
"""
parser = argparse.ArgumentParser(description='Basic scraper')
parser.add_argument('-u', '--url', dest='url', help='URL to fetch data from', default='http://www.google.com')
parser.add_argument('-f','--file', dest='file', help='Local file path to save data to', default='data.txt')
args = parser.parse_args()
return args
if __name__ == '__main__':
main()
問題是,我不知道PySide/Qt4的真的很好。我得到這個錯誤:
Error calling slot "_finished_loading"
我甚至不知道這是什麼意思。這是否可以解決Qt4和PySide的漫長而艱難的過程?這是一個簡單的修復?
感謝您的所有意見。