首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我需要得到超文本标记语言的源代码作为字符串CEFPython

我需要得到超文本标记语言的源代码作为字符串CEFPython
EN

Stack Overflow用户
提问于 2017-06-28 03:28:10
回答 1查看 994关注 0票数 -1

我试图获得HTML源作为字符串从网页网址使用CEFPython,我希望MainFrame的源内容被抓取和获得字符串

代码语言:javascript
复制
def save_screenshot(browser):    
    # Browser object provides GetUserData/SetUserData methods
    # for storing custom data associated with browser. The
    # "OnPaint.buffer_string" data is set in RenderHandler.OnPaint.
    buffer_string = browser.GetUserData("OnPaint.buffer_string")
    if not buffer_string:
        raise Exception("buffer_string is empty, OnPaint never called?")
    mainFrame = browser.GetMainFrame()
    print("Main frame is ", mainFrame)
    # print("buffer string" ,buffer_string)

    # visitor object
    visitorObj = cef_string()
    temp = mainFrame.GetSource(visitorObj).GetString()
    print("temp : ", temp)

    visitorText = mainFrame.GetText(temp)
    siteHTML = mainFrame.GetSource(visitorText)
    print("siteHTML is ", siteHTML)

问题:代码没有为siteHTML返回任何内容

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-17 02:13:26

您的mainframe.GetSource(visitor)是异步的。因此,您不能从它调用GetString()

这就是这样做的方式,不幸的是,你需要以异步的方式思考:

代码语言:javascript
复制
class Visitor(object)
    def Visit(self, value):
        print("This is the HTML source:")
        print(value)
myvisitor = Visitor()
mainFrame = browser.GetMainFrame()
mainFrame.GetSource(myvisitor)

还有一件事需要注意:上面例子中的访问者对象myvisitor被传递给弱引用中的GetSource()。换句话说,您必须使该对象保持活动状态,直到传回源。如果您将上述代码片段中的最后三行放入一个函数中,则必须确保该函数在作业完成之前不会返回。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44788353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档