2017-08-15 53 views
-1

我似乎无法让我的python网络刮板工作与JS呈现网站,调用服务器填充网页。就拿本网站(https://playon.co/#/en/games-lobby),如果我用这个脚本:JS生成的页面没有完全呈现为html时,刮

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,就像任何其他的方法,如硒,BeatifulSoup等,但他们都失败在网站调用服务器来填充页面内容时正确呈现html。

我在stackoverflow上找到了one similar question似乎解决了同样的问题,但尽我所能努力,我只是无法理解解决方案,并在我的代码中采用它。它似乎是针对特定问题量身定制的解决方案,我无法弄清楚它究竟如何适用于我的问题,即使它看起来相似。

任何帮助将不胜感激,谢谢!

+0

尝试使用dryscrape它声称刮任何JS网站。 –

+0

@RajanChauhan还没有尝试过,我会试试看,谢谢! – Maya

回答

0

您链接的解决方案假定存在您希望提供JSON格式数据的URL的版本。如果您没有类似的URL版本,那么这种方法对您没有任何用处。

+0

好的,谢谢澄清。任何想法是什么使这个版本的URL无法响应标准的js刮? – Maya