如何将一个网页的文本全部提取出来?

JellyBool
  • 16.2k

如题,比如我想将SF的这个问题页的纯文本(不包括html标签,就是我们直接看到的纯文本)提取出来,有啥子好方法?或者说有专门干这事的类库没有?

回复
阅读 55k
19 个回答
✓ 已被采纳

Python可以使用Beautiful Soup库的get_text()方法,可以获取一个标签以及其子孙标签内所有的文本的内容,
Beautiful Soup 4.2.0 文档

可能题主想要这样的:
图片描述

或者是这样的:
图片描述

Java可以用Jsoup实现:

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.7.3</version>
</dependency>
chegde
  • 16

php 有Snoopy库 可以直接抓取网页的文本内容 (去除HTML标签)
fetch一下
我用正则提取的

Pisces000221
  • 119

再来一个Javascript的:PhantomJS
这个比较适合类似的需求,也经常被用于进行网页截图一类的工作。
官方网站:phantomjs.org

找一个解析html的库,比如说python有HTMLParser,sgmllib,htmllib
然后你解析一把它应该会变成一棵树,你就遍历一下找自己要的东西拿走

我只处理过xml不过应该差不多就是这么来的...

LZ 用js 来取可以么?

console.log(document.body.innerText)

innerHtml 所有节点和内容

innerText 所有非节点内容

特定的网站,可以按照html dom 来抽取你要的数据。非常快捷。

evidence
  • 1
新手上路,请多包涵

图片描述

我不会告诉你我用

html2text

html2text is a Python script that converts a page of HTML into clean, easy-to-read plain ASCII text. Better yet, that ASCII also happens to be valid Markdown (a text-to-HTML format).

Usage: html2text.py [(filename|url) [encoding]]

busyStone_576838
  • 51

PHP 原生函数有个…… strip_tags()

我不介意这种事情还用一些这样那样的库,如果题主想要一劳永逸的话,去学习正则吧,任何一门语言都支持的

只取文字?
php用xpath

itellin
  • 1
新手上路,请多包涵

在R中很容易实现,比如用rvest包

poly
  • 1
新手上路,请多包涵

找个能模拟浏览器引擎的
然后
var html = document.getElementsByTagName('html')[0]
text = html.innerTEXT

这样的东西node_module有很多如: jsdom, cheerio

用一个正则把 html 便签都替换成空,然后把空格都替换成空就可以了吧,哪有前面各位说的那么复杂。

正则就是可以了。

我用 Python 纯正则提取了好多招聘网站的招聘信息,做成了 CodeJob

宣传栏