我似乎无法让我的python web scraper与JS渲染的网站一起工作,这些网站调用服务器来填充网页。以我的网站(https://playon.co/#/en/games-lobby)为例,如果我使用这个脚本:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from lxml import html
class Render(QWebPage):
def __init__(self, url):
self.app = QApplication(sys.argv)
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()
url = 'https://playon.co/#/en/games-lobby'
r = Render(url)
result = r.frame.toHtml()
print(result)
它适用于大多数JS呈现的网站,就像Selenium,BeatifulSoup等任何其他方法一样,但是当网站调用服务器来填充页面内容时,它们都无法正确呈现html。
我在stackoverflow上发现了one similar question似乎解决了同样的问题,但是就像我尝试的一样,我无法理解解决方案并在我的代码中采用它。它似乎是针对该特定问题的定制解决方案,我无法弄清楚它是如何适用于我的问题,即使它似乎相似。
任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
您链接的解决方案假定您希望抓取的URL版本以JSON格式提供数据。如果您没有相似版本的网址,那么这种方法对您没有任何用处。