微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何保持 PyQT5 流打开以捕获 dojo/domReady! JS执行?

如何解决如何保持 PyQT5 流打开以捕获 dojo/domReady! JS执行?

我正在使用下面的示例代码抓取网站。问题是该网站在“dojo/domready!”后面有代码属性,因此下面引用的代码将在调整/完成剩余网站内容之前完成并抓取 HTML。

有人可以帮我调整下面的代码,使其在页面存在时抓取 HTML 之前“在页面连接后等待 10 秒”吗?我正在尝试等待任意时间,以允许任何或所有内容在初始页面加载后进一步呈现。

示例:

import bs4 as bs
import sys
import urllib3.request
from PyQt5.QtWebEngineWidgets import QWebEnginePage
from PyQt5.QtWidgets import QApplication
from PyQt5.QtCore import QUrl
import time

class Page(QWebEnginePage):
    def __init__(self,url):
        self.app = QApplication(sys.argv)
        QWebEnginePage.__init__(self)
        self.html = ''
        self.loadFinished.connect(self._on_load_finished)
        self.load(QUrl(url))
        self.app.exec_()

    def _on_load_finished(self):

        self.html = self.toHtml(self.Callable)
        print('Load finished')

    def Callable(self,html_str):
        self.html = html_str
        self.app.quit()


def main():
    page = Page('some_website')
    soup = bs.BeautifulSoup(page.html,'html.parser')
    print(soup)

main()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。