需要获取 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。
我正在尝试使用 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。