Как загрузить несколько страниц по одной в QWebPage
Я пытаюсь сканировать страницы новостей для комментариев. После некоторых исследований я обнаружил, что в основном веб-сайты используют для этого iframe. Я хочу получить "источник" iframe. Я использую QtWebKit в Python, используя PySide. Это на самом деле работает, но только один раз. Это не загрузка других веб-страниц. Я использую следующий код:
import sys
import pymysql
from PySide.QtGui import *
from PySide.QtCore import *
from PySide.QtWebKit import *
from pprint import pprint
from bs4 import BeautifulSoup
class Render(QWebPage):
def __init__(self, url):
try:
self.app = QApplication(sys.argv)
except RuntimeError:
self.app = QCoreApplication.instance()
QWebPage.__init__(self)
self.loadFinished.connect(self._loadFinished)
self.mainFrame().load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
self.frame = self.mainFrame()
self.app.quit()
def visit(url):
r = Render(url)
p = r.frame.toHtml()
f_url = str(r.frame.url().toString())
return p
def is_comment_url(url):
lower_url = url.lower()
n = lower_url.find("comment")
if n>0:
return True
else:
return False
with open("urls.txt") as f:
content = f.read().splitlines()
list_of_urls = []
for url in content:
page = visit(url)
soup = BeautifulSoup(page)
for tag in soup.findAll('iframe', src=True):
link = tag['src']
if is_comment_url(link):
print(link)
list_of_urls += link
pprint(list_of_urls)
Но проблема в том, что он работает только для одной итерации и застревает.
Также есть ли способ сохранить веб-страницу в том виде, в котором она отображается в браузере (после выполнения всего JavaScript и т. Д.)