我正在用Python做一个项目,涉及:
尽管要使NLP成功运行,仍需要在浏览器中以可视化方式提取文本,但这并不总是与源代码上的格式一致,即,有时段落中的文本被破坏了分解为几个不同的元素->会将所有碎片拼凑在一起,并使其对NLP不可行。
我知道,开发这种“基于视觉的”刮刀,而不是“基于元素的”刮刀是一项非常具有挑战性的任务,但是在这个方向上已经有了一些发展吗?
答案 0 :(得分:0)
有一次我在 SO 的某个地方为我的一个项目找到了这个片段。它可以为您提供可见文本,就好像整个文本都在一个元素中一样,尽管它们不是。您只需要传递父元素。也可以是 body
元素。如果你使用 JS 进行抓取,只需应用 JS 脚本即可。
def get_visible_text(self, el):
'''
Get visible text in a given element
'''
get_text_script = '''
function getVisibleText(element) {
window.getSelection().removeAllRanges();
let range = document.createRange();
range.selectNode(element);
window.getSelection().addRange(range);
let visibleText = window.getSelection().toString().trim();
window.getSelection().removeAllRanges();
return visibleText;
}
return getVisibleText(arguments[0]);
'''
return self.driver.execute_script(get_text_script, el)
注意:抱歉,由于声誉点低,我无法发表评论。