1
gdm 2015-11-02 16:06:13 +08:00
富文本,这不就是 beautiful soup 做的事吗?
|
2
master13 2015-11-02 16:07:14 +08:00
还要爬和解析那么多 CSS !一头撞死在豆腐上算了……
|
3
chairuosen 2015-11-02 16:08:56 +08:00 1
斜体粗体有啥用。
你应该想表达的是识别 h1 strong 这样有语意的标签吧? 一般 python 写的爬虫都是爬特定目标网站的,不用分析 HTML 你就知道你想要什么。 要分析 HTML 语意的爬虫是类似 Google 那种,不知道爬的网站长什么样的。 |
4
iyaozhen 2015-11-02 16:12:02 +08:00
赞同楼上,楼主说的还是偏向搜索引擎的爬虫,场景不一样。
|
5
skylancer 2015-11-02 16:12:22 +08:00
撸主先想想 hp 客户端嘛- -
|
6
skylancer 2015-11-02 16:12:43 +08:00
...才看到是 Py 区..
|
7
domty 2015-11-02 16:14:35 +08:00
那样解析还不如干脆用 phantomjs
鬼知道页面的 js 会不会在加载时修改页面的 css 样式 |
8
nilai 2015-11-02 16:17:48 +08:00
xpath
|
10
tonyVex 2015-11-02 16:26:06 +08:00
只把正文解析出来吧。它的 css , js 需要吗?
|
11
est OP @chairuosen 只是一个想法,可能没用。但是我觉得信息量丢了。。。
首先,当然,语义是很重要的一个方面。比如 <code> 里是代码,就知道这一定是个码农发的贴子。。。。 再比如论坛里一些帖子,有些内容,发帖人喜欢 红七醒目 。。比如做主题归纳,感觉因该提高重点文字的权重。而不是纯文本那样所有字符平等对待。 只是一个粗略想法。。。。。我知道有不实际的地方。。。乃们就不要喷我不实际了。。。 我的脑洞就是, NLP 是自然语言处理,那么 HLP 算不算超文本处理。。。。 |
12
anexplore 2015-11-02 16:34:33 +08:00
渲染以后可以得到更多信息,比如位置、字体大小等等,抽取起来当然更准确;但是渲染网页还是很费时的。
|
13
chairuosen 2015-11-02 16:35:31 +08:00
@est 你要是想用 python 写一个通用的爬虫,确实应该这么做。 什么 NLP HLP 我就不懂啦
|
14
est OP @iyaozhen
@chairuosen @anexplore 我想知道业界有没有一些比较好的 case 。 脑洞一下,比如很多时候读到 nytimes 的文章,一些亮点主题词语是 斜体 的。有木有一个搜索引擎能统计一下:“ NYTimes 斜体名词的分类”。。。。。。。。。。这里面涉及到爬虫,数据处理,清洗,如何索引富文本。。。感觉脑细胞不够用了。希望看到有别人的案例我来抄袭一下 hahahaha |
15
est OP @chairuosen 不是通用不通用的问题,而是爬出不仅要保留文字本身的信息量,还要保留当时标题,段落。排版,展现格式,甚至页面环境等信息量。
虽然我估计 99% 的页面,都是一种字号不分大小写不分段落标题格式通吃,但是总有那么一些出彩的页面,很注重行文的附加信息。 |
16
chairuosen 2015-11-02 16:51:30 +08:00
@est 我们以前是解析后的文本存一份,解析前的 Html 存一份,以备不时之需
|
17
wlee1991 2015-11-02 16:57:09 +08:00
TFHpple
|
18
verydxz 2015-11-02 17:30:15 +08:00
语义网?
|
19
hooopo 2015-11-02 20:52:59 +08:00
这个不难吧,抓取之后用 nokogiri 之类 lib 把 html 转化成 doc 对象,然后用 elastic 以 html 标签为 field 建索引,
比如,想找<strong>标签里包含 xxx 的 page 就是一个 in field 查询。 |
21
icedx 2015-11-02 21:17:05 +08:00
是的 都忽略了
不过感谢楼主给我的一个项目提供新的思路 wwwwwwwwww |
22
hitluobin 2015-11-02 21:18:37 +08:00 1
@est 你的思路是非常正确的。我们现在的项目就很依赖与这种加粗,分段的 html 标记。但是处理起来非常杂,很有挑战。
|
23
for8ever 2015-11-02 21:21:35 +08:00
用 Node.js ,炒鸡简单
|
24
menc 2015-11-02 21:38:08 +08:00 1
@est 当然有,我给你贴一段我的本科毕业论文的一段, NLP 相关的
以百度百科为例,现在的百度百科,已将整个文档进行了处理。在每个词条之前,加入了与该条目相关性最强的同时也是对用户最为有用的一些信息,在相关信息之后,条目正文开始之前,百度百科将整个正文的章节和不同章节的章节标题描述以及各章节的小标题罗列出来。而这些条目相关信息和条目章节信息是由百度百科的用户自行维护,由社区在后面进行审核,换言之,这些条目相关信息和条目索引是可靠性极高的人工标注,其对整理文本语料的作用不言而喻。如果能有效的利用这些信息,其准确率毫无疑问要高于纯使用程序进行主题分类。 以百度百科的“成龙”词条为例,在成龙的词条正文开始之前,百度百科将成龙的一部分常用的个人信息罗列出来,如原名、曾用名、代表作、职业、国际、民族等等,如图 3.1 所示;在词条正文开始之前,百度百科将词条正文的目录章节标题和小标题罗列出来,如图 3.2 所示,这些标题和小标题和章节内容直接相关,而且具有极高的相关度,可以直接作为段落主题使用。 ?1 图 3.1 成龙的个人信息 图 3.2 成龙的词条正文目录索引 从图片中可以看到,这些信息的页面组成具有其规律性,查看源代码也可以看出,其源代码也具有规律性,如图 3.3 所示,可以对 HTML 源代码进行处理得到其相关信息。通过对维基百科的调查研究,我们可以发现,维基百科也具有同样的性质和特征。 ?1 图 3.2 成龙的个人信息目录网页源码 事实上,我们可以认为,原本非结构化的百科网站的组织,经过不断优化,现在已经可以认为其具有一定的结构化特征,非结构化文本的粒度由以前普遍认为的篇章,转变成为现在的段落。甚至能直接从百科词条中提取出相关条目最重要的一部分知识。对于采用结构化知识的知识库,在语料处理的时候,能够直接得到一系列人工标注的知识;对于非结构化的知识库,能够以章节标题作为索引,同时拥有该词条相关的无信息噪点的文本内容。 |
25
menc 2015-11-02 21:40:42 +08:00
事实上,对网页清洗的过程中,要具体情况具体分析,很多人拿百度百科和 wikipedia 的语料直接保留 inner text 训练是不理智的,很多有用的信息在网页中确实呈现半结构化的规律,比如我上面给出的成龙的例子,稍加注意,可以提取出实体相关的诸多属性,我写到论文中,但是目前没发现哪里还有人写到论文中。。
|
26
est OP @menc wikipedia 的页面特定模板解析起来很有意思的。比如可以绘制出地球上人口超过 20w 的城市分布图。但是我感觉这个属于另外一个话题了。
|
27
binux 2015-11-02 22:15:09 +08:00
怎么没有, 网页解析不用 html 用什么? 你以为正文提取就不用 html 信息了?
DOM 树是做网页提取最基本的树. 在此之上分块树, 视觉信息也很常用. |
30
loading 2015-11-02 22:20:50 +08:00 via Android
重新挖坑?
你去看下实现代码,看你能避开多少个。 |
31
loading 2015-11-02 22:22:55 +08:00 via Android
没认真看回复,这个坑你挖得够深的!
我只能说:到时记得传 github ,我好跪着看! |
32
binux 2015-11-02 22:30:10 +08:00
|
35
menc 2015-11-02 22:37:19 +08:00
@est readable 算法,工业界普遍在用,正文提取算法,就是根据 div 区块大小和视觉区域对正文区域进行筛选和排查,决定有用文本和无用文本,各种语言的实现都有,印象笔记、 pocket 等一干应用都应用了该算法或者该算法的升级版
|
36
breeswish 2015-11-02 23:17:59 +08:00
各种搜索引擎就是对这些标签进行参考的典型…
|
37
ljdawn 2015-11-03 08:55:26 +08:00
以前处理过这种。 也保存格式的。特定场景应用而已。 你保存相应的标签就好了
|
38
jugelizi 2015-11-03 12:56:30 +08:00
那么意思在你爬去之前目标网站是特定的了吧
那么有限的规则可以成为既定的去匹配啊 |
39
randyzhao 2015-11-06 01:25:26 +08:00
HTML 会对内容分类处理有帮助, 实际应用中很多都会这么做.
分开之后, NLP 还是跑不掉的. |