【问题标题】:JS generated page doesn't fully render into html when scrapingJS生成的页面在抓取时没有完全呈现为html
【发布时间】:2017-08-15 18:00:26
【问题描述】:

我似乎无法让我的 python 网络爬虫与 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,它似乎可以解决同样的问题,但尽管我努力尝试,但我无法理解解决方案并在我的代码中采用它。这似乎是针对该特定问题的量身定制的解决方案,尽管看起来很相似,但我无法弄清楚它究竟如何适用于我的问题。

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

【问题讨论】:

  • 尝试使用它声称可以抓取任何 JS 网站的dryscrape。
  • @RajanChauhan 没试过,我试试,谢谢!

标签: javascript python html web-scraping


【解决方案1】:

您链接到的解决方案假定您希望抓取的 URL 版本以 JSON 格式提供数据。如果您没有要抓取的 URL 的类似版本,则该方法对您没有任何用处。

【讨论】:

  • 好的,感谢您的澄清。知道是什么让这个版本的 URL 对标准 js 抓取没有响应吗?
猜你喜欢
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2015-09-09
  • 2018-06-12
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-05
相关资源
最近更新 更多