java - 无法在 Python 3.5 中从 PyQt5 导入 QWebPage

标签 java python web-scraping

我现在正在尝试编写一些代码来从某些 Java 呈现的页面中抓取 Web 内容。我使用 PyQt5 从网上找到了一些示例。但是,当我安装了 PyQt5.5.7 的 Python 3.5 但导入其模块失败时(ImportError:无法导入名称'QWebPage')。我附上下面的代码以供引用。如果有人可以建议如何解决此问题,或以任何其他方式废弃 Java 呈现的网页内容,我们将不胜感激。

# standard imports
import sys

# third-party imports
import requests
from bs4 import BeautifulSoup
from pyvirtualdisplay import Display
from PyQt5.QtWebEngineWidgets import QWebPage
from PyQt5.QtWidgets import QApplication



class Render(QWebPage):
    """Render HTML with PyQt5 WebKit."""

    def __init__(self, html):
        self.html = None
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)
        self.mainFrame().setHtml(html)
        self.app.exec_()

    def _loadFinished(self, result):
        self.html = self.mainFrame().toHtml()
        self.app.quit()


url = 'https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/'

# get the raw HTML
source_html = requests.get(url).text

# return the JavaScript rendered HTML
with Display(visible=0, size=(800, 600)):
    rendered_html = Render(source_html).html

# get the BeautifulSoup
soup = BeautifulSoup(rendered_html, 'html.parser')

print('title is %r' % soup.select_one('title').text)

最佳答案

QWebPage 是 PyQt4 中 QtWebKit 模块中的一个类。此模块已被折旧并作为 PyQt5 的可选附加组件分离。安装:

pip install PyQtWebEngine

QtWebKit 已经被QtWebEngineWidgets 取代,而取代QWebPage 的相应类是QWebEnginePage。所以你应该说:

from PyQt5.QtWebEngineWidgets import QWebEnginePage

关于java - 无法在 Python 3.5 中从 PyQt5 导入 QWebPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39147019/

相关文章:

python - 雅虎!商户结帐 API 问题

javascript - .GetElementsByName.SelectedIndex 明显更改选项但不是以编程方式更改?

java - Junit 测试方法的日志输出是否正确?

java - 如何通过电子邮件发送从相机拍摄的照片 Android

rhel - 显式声明 lib 时出现 UnsatisfiedLinkError 异常

java - jaxb:枚举列表上的奇怪类转换异常

python - 未找到子进程调用无效参数或选项

z/OS 大型机上 USS 中的 Python 代码 - 无法识别方括号

python - 无法以所需方式从网页中获取两个字段

python - 在 Python 中使用 Selenium 抓取随时间变化的动态 URL