使用 Qt5 抓取动态 Javascript
Scraping Dynamic Javascript with Qt5
我 运行 遇到了一个小问题。我有一个使用 javascript 的视频游戏在线拍卖网站。确切地说,我想抓取的数据位于 x-template 类型的脚本块中。我无法获取实际数据,只能获取源代码中的脚本。
这是我的代码:
def render(source_url):
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Render(QWebEngineView):
def __init__(self, url):
self.html = None
self.app = QApplication(sys.argv)
QWebEngineView.__init__(self)
self.loadFinished.connect(self._loadFinished)
#self.setHtml(html)
self.load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
# This is an async call, you need to wait for this
# to be called before closing the app
self.page().toHtml(self._callable)
def _callable(self, data):
self.html = data
# Data has been stored, it's safe to quit the app
self.app.quit()
return Render(source_url).html
url = "https://www.pathofexile.com/trade/search/Bestiary/blkdmmofg"
f = open("html_out.txt", "w", encoding = "utf8")
f.write(str(render(url)))
f.close()
虽然我手动检查第一个项目的货币文本并尝试在我的文件中找到它,但它找不到它,因为它是动态的。
html_out.txt 文件中脚本的开头如下所示:
<script type="x-template" id="trade-exchange-item-template">
然后是我正在搜索的数据,格式如下:
<span v-else class="currency-text">{{currencyText(priceInfo.currency)}}</span>
我怎样才能让它完全加载站点和脚本并在之后使用正确的数据获取 HTML?
提前致谢!
好像没有真正的客户我无法抓取它。不过,它与 Selenium 配合使用时效果很好。
我 运行 遇到了一个小问题。我有一个使用 javascript 的视频游戏在线拍卖网站。确切地说,我想抓取的数据位于 x-template 类型的脚本块中。我无法获取实际数据,只能获取源代码中的脚本。
这是我的代码:
def render(source_url):
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
class Render(QWebEngineView):
def __init__(self, url):
self.html = None
self.app = QApplication(sys.argv)
QWebEngineView.__init__(self)
self.loadFinished.connect(self._loadFinished)
#self.setHtml(html)
self.load(QUrl(url))
self.app.exec_()
def _loadFinished(self, result):
# This is an async call, you need to wait for this
# to be called before closing the app
self.page().toHtml(self._callable)
def _callable(self, data):
self.html = data
# Data has been stored, it's safe to quit the app
self.app.quit()
return Render(source_url).html
url = "https://www.pathofexile.com/trade/search/Bestiary/blkdmmofg"
f = open("html_out.txt", "w", encoding = "utf8")
f.write(str(render(url)))
f.close()
虽然我手动检查第一个项目的货币文本并尝试在我的文件中找到它,但它找不到它,因为它是动态的。
html_out.txt 文件中脚本的开头如下所示:
<script type="x-template" id="trade-exchange-item-template">
然后是我正在搜索的数据,格式如下:
<span v-else class="currency-text">{{currencyText(priceInfo.currency)}}</span>
我怎样才能让它完全加载站点和脚本并在之后使用正确的数据获取 HTML?
提前致谢!
好像没有真正的客户我无法抓取它。不过,它与 Selenium 配合使用时效果很好。