在抓取时,JS生成的页面没有完全呈现为html

时间:2017-08-15 18:00:26

标签: javascript python html web-scraping

我似乎无法让我的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似乎解决了同样的问题,但是就像我尝试的一样,我无法理解解决方案并在我的代码中采用它。它似乎是针对该特定问题的定制解决方案,我无法弄清楚它是如何适用于我的问题,即使它似乎相似。

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

1 个答案:

答案 0 :(得分:0)

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