蜘蛛池知识

蜘蛛池入口页的正文提取:蜘蛛去掉标签后剩下什么

入口页的 HTML 结构会直接影响蜘蛛能否正确识别正文。本文从正文提取的常见判断依据出发,说明导航过长、正文分散、依赖 JS 渲染等做法为什么容易出问题,并给出几项可以自己动手检查的方法和调整建议。

蜘蛛池知识

蜘蛛池入口页的正文提取:蜘蛛去掉标签后剩下什么

入口页做得再花哨,蜘蛛最终处理的还是一份 HTML。它需要从这堆标签里判断:哪些是正文,哪些是导航、页脚、广告和推荐位。这个判断过程通常被称为正文提取,它直接决定后面的内容是拿去索引、去重,还是被当成噪声丢掉。

正文提取大致在看什么

  • 文本密度:一块区域里文字多不多,标签占比高不高;
  • 标签权重:标题标签、段落、列表通常被赋予更高权重;
  • 位置:页面中部的独立内容块,比顶部和底部更容易被当作正文;
  • 结构连贯性:连续多个段落组成的块,比零散短句更像正文。

不同爬虫的具体算法并不公开,也不完全一致,但大体思路接近。与其去猜算法,不如让自己的页面结构清晰、正文集中。

常见让正文提取变难的做法

把正文拆得太散

正文被广告位、推荐位、内链块切成一截一截,每段只有一两句话,提取时容易被当成站点噪声处理。

导航和页脚比正文还长

菜单、标签云、友情链接、备案信息加起来字数超过正文,提取结果就可能以偏概全,把边角内容当成了主体。

正文放在图片或 JS 里

文字做成图片,或者依赖前端渲染后才显示,蜘蛛拿到的原始 HTML 里可能什么都没有,自然也无从提取。

大量无语义的 div 嵌套

整页用 div 套 div,没有 p、h2、ul 这类结构标签,提取时缺少可以依据的线索,判断难度会明显上升。

怎么检查自己的页面

  1. 用浏览器禁用 JS 打开页面,看看剩下的内容是不是你想让蜘蛛看到的那部分;
  2. 查看源代码,搜索正文的第一句话,确认它确实存在于 HTML 里;
  3. 粗略估算正文文字量与页面总文字量的比例,比例太低说明噪声偏多;
  4. 关闭 CSS 再看一遍,正文是否仍然连贯、可读。

做起来不复杂的几个调整

  • 把正文放在一个相对独立的容器里,减少与其他模块的混杂;
  • 段落用 p,小标题用 h2 或 h3,列表用 ul 或 ol,给提取提供结构信号;
  • 导航、页脚、推荐位控制字数,别让它们喧宾夺主;
  • 需要蜘蛛看到的关键内容,不要只放在图片或前端渲染里。
一个简单的自测:把页面源码里的标签全部去掉,如果剩下的文本前几行是菜单和备案号,那蜘蛛大概率也是这么看的。

改版时的节奏提醒

调整结构时尽量小步改。一次性把模板、容器、标签全换掉,蜘蛛重新抓取时拿到的页面和原来差异很大,抓取和索引的节奏可能会乱上一段时间。可以先在少量入口页上试,观察日志里这些页面的抓取是否正常,再逐步铺开。

正文提取不是玄学,多数问题来自结构而不是算法。把正文写清楚、放干净、补上必要的结构标签,剩下的交给蜘蛛自己去判断就好。