Python库可从任意网页上抓取格式化的文本

时间:2019-03-27 16:27:28

标签: python web-scraping nlp computer-vision

我正在用Python做一个项目,涉及:

  1. 从作为输入的URL中提取网页源代码(使用Selenium和Chrome WebDriver)
  2. 解析源代码并提取可见文本(使用BeautifulSoup)
  3. 对提取的文本进行自然语言处理(NLP)

尽管要使NLP成功运行,仍需要在浏览器中以可视化方式提取文本,但这并不总是与源代码上的格式一致,即,有时段落中的文本被破坏了分解为几个不同的元素->会将所有碎片拼凑在一起,并使其对NLP不可行。

我知道,开发这种“基于视觉的”刮刀,而不是“基于元素的”刮刀是一项非常具有挑战性的任务,但是在这个方向上已经有了一些发展吗?

1 个答案:

答案 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)

注意:抱歉,由于声誉点低,我无法发表评论。