ニュース記事ページのコメントをクロールしようとしています。いくつかの調査の結果、ほとんどの Web サイトが iframe を使用していることがわかりました。iframeの「src」を取得したい。PySide を使用して Python で QtWebKit を使用しています。実際には機能していますが、一度だけです。他の Web ページを読み込んでいません。次のコードを使用しています。
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)
しかし、問題は、単一の反復でのみ機能し、スタックすることです。
また、Webページをブラウザに表示されているとおりに保存する方法はありますか(すべてのjavascriptなどを実行した後)