需要获取 HTML 源作为字符串 CEFPython

Need to get HTML source as string CEFPython

我正在尝试使用 CEFPython 从 Web URL 获取 HTML 字符串形式的源 我想抓取 MainFrame 的源内容并获取

中的字符串
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

返回任何内容

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

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

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()。换句话说,您必须使该对象保持活动状态,直到将源传回。如果将上述代码段中的最后三行放在一个函数中,则必须确保该函数在作业完成之前不会 return。