python爬取网页文本,python爬取js加载的数据
您必须通过调用ajax js来加载动态内容。
我真的不知道怎么用PyQt,但是我希望我能做到。HTML如下所示:
荷兰
您可以使用下面的简单代码通过PyQt呈现页面:
defrender(source_html):
进口系统
来自pyqt5。qtcoreimportqeventloop
来自pyqt5。qtwidgetsimportqapplication
来自pyqt5。qtwebenginewidgetimport qwebengineview
类渲染器(qwebengineview):
def __init__(self,html):
self.html=无
self . app=QA application(sys . argv)).
QWebEngineView。__init__(self)
自. loadfinished.connect(自。_加载完成)。
是self.sethtml(html)
而self.html则没有:
self.app.process事件(qeventloop . excludeuserinputevents)qeventloop . excludesocketnotifiers
self.app.quit(
def_callable(self,data):
self.html=data
def_loadfinished(self,result):
self.page()。tohtml)自我。_callable))).
返回到(source _ html)。超文本标记语言
导入请求
sample _ html=requests . get(computing.com/software/pyqt/河岸https://号)。文本
打印(呈现)sample_html))
如何通过运行“onclick”获取内容?
解决方法:
这是一个老问题.
从javascript运行PyQt函数:
可能有很多方法可以实现,但是用QWebChannel就解决了。然后,从html中调用js函数,并使用Web通道与Qt通信。
将需要Qwebchannel.js。我从本地计算机上的Qt5示例目录中获得了它。网络上很多地方都有相同的文件。找找那个。
使用__init__创建网络通道。
self . web channel=Qt web channel . q web channel(self))。
然后,设置webengineview主页使用这个通道,并注册PyQt和js之间要共享的对象。
self.page()。setwebchannel ) (self.webchannel).
Self.web channel.register对象(我的频道),Self)。
英寸js(或者。html),设置网络通道。
var MyChannel=null
QWEBChannel (Qt。WebChannelTransport,函数(通道))。
我的频道=channel . objects . my channel;
);
这就是qwebchannel.js工作的地方。您的js或html文件必须包含它。对于我来说,在我做任何事情之前,我会在scriptsrc= scripts/qweb channel . js /scriptsrc中加载其他js
现在,您已经设置了通过通道从js调用PyQt,但是您能调用什么呢?一些装饰PyQt插槽的东西。因此,举例来说,如果您想在javascript中使用字符串作为参数来调用render foo 函数,您可以创建:
@qtcore.pyqtslot(str))).
deffoo(self,some_tring):
print(somestring:% s)% some _ string)))))。
…然后在js文件或index.html中调用mychannel.foo(whatever )。它可以作为onclick或从onclick调用的其他函数体来完成。
mychannel.foo中的对话( whatever ):调用mychannel是赋给通道中注册的对象的名字(python中的),调用新的QWebChannel。
另外,如果想从PyQt调用js函数,也很简单。在这种情况下,就打电话。
Self.page()。runJavaScript)、somejsfunction)等等)。)
因为它被称为异步,所以如果您需要对响应做任何事情,您必须设置一个响应处理程序。
Self.page()。runJavaScript)、somejsfunction)等等)。自我。_ _回调)
…然后定义一个回调(可能是呈现器的成员):
def__callback(self,response):
If响应:
Print (handlingjsresponse:% s,response))。
标签:pyqt5,pyqt,pyqt4,javascript,jquery
来源:https://codeday.me/bug/2019, 357.html,2022年11月11日。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。